我在Pandas中有一个数据框,在该数据框中我想知道两个特定列中每个值组合的出现次数。以下代码似乎做了我想要的:
coupon_test.groupby(['CAPSULE_TEXT', 'GENRE_NAME'])[['CAPSULE_TEXT', 'GENRE_NAME']].count()
CAPSULE_TEXT GENRE_NAME
CAPSULE_TEXT GENRE_NAME
WEBサービス その他のクーポン 2 2
...
但是,如果我先进行投影然后分组,则会返回一个空结果:
coupon_test[['CAPSULE_TEXT', 'GENRE_NAME']].groupby(['CAPSULE_TEXT', 'GENRE_NAME']).count()
CAPSULE_TEXT GENRE_NAME
如果我删除了计数,我会得到一些结果,但它们似乎没有分组:
coupon_test[['CAPSULE_TEXT', 'GENRE_NAME']].groupby(['CAPSULE_TEXT', 'GENRE_NAME']).head()
CAPSULE_TEXT GENRE_NAME
0 グルメ グルメ
...
这两种情况有什么区别?为什么第二个示例中的count()
不会返回与第一个示例中的结果相同的结果?
答案 0 :(得分:1)
coupon_test[['CAPSULE_TEXT', 'GENRE_NAME']]
是一个DataFrame,只有两列。
如果按这两列进行分组,则表示没有值的组。每个组都是一个强大的数据框:
In [77]: pd.DataFrame(index=[[0,1],[2,3]])
Out[77]:
Empty DataFrame
Columns: []
Index: [(0, 2), (1, 3)]
将count
应用于每个空的DataFrame会产生一个空系列:
In [79]: pd.DataFrame(index=[[0,1],[2,3]]).count()
Out[79]: Series([], dtype: int64)
因此,这是一个退化的情况,groupby/count
没有返回任何内容。这个故事的寓意是,当使用groupby/count
时,您至少需要一个您没有分组的列,以便可以计算。