我有一个看起来像这样的数据框:
dfA
name field country action
Sam elec USA POS
Sam elec USA POS
Sam elec USA NEG
Tommy mech Canada NEG
Tommy mech Canada NEG
Brian IT Spain NEG
Brian IT Spain NEG
Brian IT Spain POS
我想根据前 3 列对数据框进行分组,添加一个新列“No of data”。这是我使用它做的事情:
dfB = dfA.groupby(["name", "field", "country"], dropna=False).size().reset_index(name = "No_of_data")
这给了我一个新的数据框,它看起来像这样:
dfB
name field country No_of_data
Sam elec USA 3
Tommy mech Canada 2
Brian IT Spain 3
但是现在我还想向这个特定的数据帧添加一个新列,它告诉我“名称”、“字段”和“国家”的每个组合的“POS”数量的计数是多少。应该是这样的:
dfB
name field country No_of_data No_of_POS
Sam elec USA 3 2
Tommy mech Canada 2 0
Brian IT Spain 3 1
当我没有关于“POS NEG”的信息并且需要从 dfA 获取时,如何将新列 (No_of_POS) 添加到表 dfB。
您可以在aggregate
方法中使用带有函数的字典:
dfA.groupby(["name", "field", "country"], as_index=False)['action']\
.agg({'No_of_data': 'size', 'No_of_POS': lambda x: x.eq('POS').sum()})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句