我有一个构建如下的 Pandas 数据框:
对于 Col1 的每一个值,我想计算 Col2 的每个值(忽略 Nan 值)并将总和放在关联列中,得到如下结果:
我该如何在 Pandas 中做到这一点?我在 Col1 中有很多值,在 Col2 中也有很多列。非常感谢!
你可以使用 groupby 和 pivot_table 方法来实现这个目标。具体步骤如下:
groupby
pivot_table
value_counts
这里是实现代码:
import pandas as pd # 创建示例数据框 data = { 'Col1': [1, 1, 1, 2, 2, 3, 3], 'Col2': ['A', 'B', 'B', 'A', 'A', 'A', None] } df = pd.DataFrame(data) # 使用 groupby 和 value_counts 来统计每个 Col1 中每个 Col2 的出现次数 result = df.groupby('Col1')['Col2'].value_counts().unstack(fill_value=0) # 显示结果 print(result)
groupby('Col1')['Col2'].value_counts()
Col1
Col2
unstack(fill_value=0)
Col2 A B Col1 1 1 2 2 2 0 3 1 0
这个方法对于具有多个不同 Col2 值的情况同样适用。如果 Col2 有其他值(例如 C, D 等),unstack() 会自动创建新的列并填充计数。
C
D
unstack()