对于这样的数据
import pandas as pd
df=pd.DataFrame({'group1': list('AABBCCAABBCC'),'group2':list('ZYYXYXXYZXYZ')})
我费了好大劲才发现,要制作行列频数表,最常用的方法如下
print df.pivot_table(index='group1',columns='group2',aggfunc=len,fill_value=0)
由此我得到
group2 X Y Z
group1
A 1 2 1
B 2 1 1
C 1 2 1
我只是想知道是否有任何“更快”的方法来生成相同的表。并不是说它有什么问题,而是我的意思是减少输入(不需要我编写自定义函数)
我只是将其与 R 进行比较,通过 R 可以获得相同的结果
table(df$group1,df$group2)
与此相比,输入非默认参数,例如 aggfunc
和 fill_value
并输入参数名称、index
和 columns
似乎需要很多额外的努力。
总的来说,我的经验(非常有限)是Python中的R等效函数在简洁性上非常相似。
任何关于替代方法的建议都会很棒。我需要用我的数据制作几个这样的表格。
最佳答案
这是一种替代方法。
>>> df.groupby(['group1', 'group2']).group2.count().unstack().fillna(0)
group2 X Y Z
group1
A 1 2 1
B 2 1 1
C 1 2 1
关于python - pythonivot_table 的替代方案,用于两个变量的频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469503/