MMS*_*MMS 3 python pivot dataframe pandas
我有一个要求,我在尝试计算值并将它们放在数据透视表中.
这是我的数据帧,
Cola Colb
Apple Rippened
Orange Rippened
Apple UnRippened
Mango UnRippened
Run Code Online (Sandbox Code Playgroud)
我希望输出像这样,
Rippened UnRippened
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
请分享您的想法.
piR*_*red 10
我喜欢这个问题....
选项1
pd.get_dummies(df.Cola).T.dot(pd.get_dummies(df.Colb))
Rippened UnRippened
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
选项2
i, r = pd.factorize(df.Cola.values)
j, c = pd.factorize(df.Colb.values)
n, m = r.size, c.size
b = np.bincount(i * m + j, minlength=n * m).reshape(n, m)
pd.DataFrame(b, r, c)
Rippened UnRippened
Apple 1 1
Orange 1 0
Mango 0 1
Run Code Online (Sandbox Code Playgroud)
选项3
df.groupby(['Cola', 'Colb']).size().unstack(fill_value=0)
Colb Rippened UnRippened
Cola
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
选项4
df.groupby('Cola').Colb.value_counts().unstack(fill_value=0)
Colb Rippened UnRippened
Cola
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
用我最喜欢的: pd.crosstab
df = pd.crosstab(df.Cola, df.Colb)
print(df)
Colb Rippened UnRippened
Cola
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
IIUC:
In [178]: d.pivot_table(index='Cola', columns='Colb', aggfunc='size', fill_value=0)
Out[178]:
Colb Rippened UnRippened
Cola
Apple 1 1
Mango 0 1
Orange 1 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |