2017-05-12 2 views
2

をそれを置く:Pythonのパンダ計算数との私はのようなデータフレームを持っているとしましょう列に

x  y 
1 45 T 
2 70 T 
3 88 F 
4 45 F 
5 88 F 
.. 

そして、私は一緒に両方の列のためのvalue_countsを計算し、それらを入れたいです

XがIを(整数)は普通数であり、yは、元のデータフレームに入ったTの値の数であり、そしてZはFの数は、それが得た値である
x  y z 
1 45 1 1 
2 70 1 0 
3 88 0 2 
.. 

:分離カラムで

答えて

3

使用crosstab + reset_index + rename_axis:列の名前を変更する必要がある場合でも(ただしyで唯一の少数のユニークな値は、必要が)dictが必要

df = df.groupby(['x','y']) 
     .size() 
     .unstack(fill_value=0) 
     .reset_index().rename_axis(None, 1) 
print (df) 
    x F T 
0 45 1 1 
1 70 0 1 
2 88 2 0 

df = pd.crosstab(df['x'], df['y']).reset_index().rename_axis(None, 1) 
print (df) 
    x F T 
0 45 1 1 
1 70 0 1 
2 88 2 0 

代替unstack + size + groupbyで:

d = {'T':'y','F':'z'} 
df = df.groupby(['x','y']) 
     .size() 
     .unstack(fill_value=0) 
     .rename(columns=d) 
     .rename_axis(None, 1) 
     .reset_index() 
print (df) 
    x z y 
0 45 1 1 
1 70 0 1 
2 88 2 0 
+0

1分ではない、素晴らしい:) –

+0

@RahulKP - ありがとう。 – jezrael

関連する問題