此问题在此处已有答案:
Get statistics for each group (such as count, mean, etc) using pandas GroupBy?(11个回答)
7天前关闭
我有一个结构像这样的框架:
pd.DataFrame(
{'col1':['foo','foo','foo','foo','foo','foo'],'col2':['bar','bar','bar','bar','bar','bar'],'col3':['baz','baz','baz','baz','baz','baz'],'varying_column':['x','y','z','d','e','f']},index=['a','b','c','a','a','b']
).reset_index()
my_key col1 col2 col3 varying_column
0 a foo bar baz x
1 b foo bar baz y
2 c foo bar baz z
3 a foo bar baz d
4 a foo bar baz e
5 b foo bar baz f
字符串
其中每一行都有一个索引值,并且有一列是变化的。我想做的是通过创建一个新的列来为每个索引创建一行,该列是varying_column
的计数,如下所示:
my_key col1 col2 col3 count_varying_column
0 a foo bar baz 3
1 b foo bar baz 2
2 c foo bar baz 1
型
我假设这可以通过做某种groupby
index
,计数varying_column
,也许unstack
来完成?
在我的真实的数据中,其他列也有不同的值,但这与这个问题无关,因此为了简单起见,我将它们保持不变。
注意事项:这不仅仅是一个简单的按集合分组,就像在this stack overflow thread中讨论的那样。是的,我想要每个组的计数,但是这个问题是不同的,因为我想删除varying_column
的重复项,并将其替换为一个新的列,每个键值有一行,新的列count_varying_column
是每个键varying_column
的计数。
2条答案
按热度按时间fcy6dtqo1#
试试这个:
字符串
wfveoks02#
您可以将
groupby
方法与size
结合使用来计算出现次数,然后将此结果与原始DataFrame合并以获得唯一行。之后,您可以根据'my_key'列删除重复行。以下是您的操作方法:
字符串