我有一个这样的数据帧:
df = pd.DataFrame({"X":['a', 'b', 'c', 'b', 'b', 'a'],
"Y":['A', 'B', 'A', 'C', 'A', 'A']})
我可以使用哪种方法来计算类似的值并将其更改为:
a b c
A 2 1 1
B 0 1 0
C 0 1 0
您可以尝试crosstab
(文档(:
pd.crosstab(df.Y, df.X)
结果:
X a b c
Y
A 2 1 1
B 0 1 0
C 0 1 0
您可以使用pivot_table方法,第一个参数是数据源,我认为columns
参数、index
参数和fill_value
参数不需要解释,但我想澄清一下aggfunc
参数:"size"将包括nan
值,如果您将此参数设置为"count",则只计算no-nan
值。你可以在这个答案中阅读更多关于这方面的内容。
pd.pivot_table(df, columns='X', index='Y', fill_value=0, aggfunc='size')
输出:
X a b c
Y
A 2 1 1
B 0 1 0
C 0 1 0