2017-08-09 4 views
2

J'ai essayé de changer la valeur de crosstab avec le bruit normal que j'ai donné. Mais je ne peux pas le mettre à jour après que je l'ai changé. Pouvez-vous s'il vous plaît m'aider pour cela?comment mettre à jour les valeurs de tableau croisé dans python pandas

cross_tab1 = pd.crosstab(data[0], [data[1], data[2]], rownames=['data0'], colnames=['data1', 'data2']) 
c1 = cross_tab1.unstack() 


for (a, b, c), count in c1.iteritems(): 
    count = np.round(count + np.random.normal(0, 2.0)).clip(min=0) 
    cross_tab1.loc(a,b,c, int(count)) 

Répondre

2

Je pense que vous pouvez utiliser pour loc affecter de nouvelles valeurs et durent DataFrameunstack avec transpositeur:

for (a, b, c), count in c1.iteritems(): 
    count = np.round(count + np.random.normal(0, 2.0)).clip(min=0) 
    c1.loc[a,b,c] = int(count) 

df = c1.unstack(2).T 

Mais mieux est d'utiliser applymap:

df1 = cross_tab1.applymap(lambda x: np.round(x + np.random.normal(0, 2.0)).clip(min=0)) \ 
       .astype(int) 
+1

Merci. J'ai utilisé applymap pour cela – user3104352