你好,我在csv中有以下数据集:
Group Size Some_other_column1 Some_other_column2
Short Small blabla1 blabla6
Moderate Medium babla3 blabla8
Short Small blabla2 blabla7
Moderate Small blabla4 blabla9
Tall Large blabla5 blabla10
Short Medium blabla11 blabla12
我想使用python代码获得以下结果:
Group Size Count Some_other_column1 Some_other_column2
Short Small 2 blabla1 blabla6
Moderate Medium 1 babla3 blabla8
Short Small 2 blabla2 blabla7
Moderate Small 1 blabla4 blabla9
Tall Large 1 blabla5 blabla10
Short Medium 1 blabla11 blabla12
基本上,我需要计算组大小对的数量,并为此创建一个新列,即“ Count”,其他所有列保持相同。 我可以使用熊猫或任何可以帮助您的东西。
作为参考,关于此主题还有另一个问题,但是由于我需要保留多列,因此它不能解决我的问题: Python: get a frequency count based on two columns (variables) in pandas dataframe
这里还有另一个主题: How to assign a name to the a size() column? 但这也不能回答我的问题,因为我不想再通过应用上述链接中描述的方法而直接删除另外2列(“其他column1 / 2”)。同样,同样重要的是,我不想合并对,我需要保留所有对,因为它们在Some_other_column1 / 2上具有不同的值。
答案 0 :(得分:0)
您需要insert
与size
中的GroupBy.transform
:
df.insert(2, 'Count', df.groupby(['Group','Size'])['Size'].transform('size'))
print (df)
Group Size Count Some_other_column1 Some_other_column2
0 Short Small 2 blabla1 blabla6
1 Moderate Medium 1 babla3 blabla8
2 Short Small 2 blabla2 blabla7
3 Moderate Small 1 blabla4 blabla9
4 Tall Large 1 blabla5 blabla10
5 Short Medium 1 blabla11 blabla12