【发布时间】:2017-09-27 15:04:03
【问题描述】:
接着这个问题:python - Group by and add new row which is calculation of other rows
我有一个熊猫数据框如下:
col_1 col_2 col_3 col_4
a X 5 1
a Y 3 2
a Z 6 4
b X 7 8
b Y 4 3
b Z 6 5
我想对 col_1 中的每个值应用一个函数,其中 col_3 和 col_4(以及更多列)中的值对应于 col_2 中的 X 和 Z,并使用这些值创建一个新行。所以输出如下:
col_1 col_2 col_3 col_4
a X 5 1
a Y 3 2
a Z 6 4
a NEW * *
b X 7 8
b Y 4 3
b Z 6 5
b NEW * *
* 是函数的输出。
原始问题(只需要简单添加)的回答是:
new = df[df.col_2.isin(['X', 'Z'])]\
.groupby(['col_1'], as_index=False).sum()\
.assign(col_2='NEW')
df = pd.concat([df, new]).sort_values('col_1')
我现在正在寻找一种使用自定义函数的方法,例如(X/Y) 或((X+Y)*2),而不是X+Y。如何修改此代码以适应我的新要求?
【问题讨论】:
-
在看到coldspeed的答案之前,我已经找到了您正在寻找的解决方案。
-
不是重复的@zipa,它是该问题的后续。回答了这个问题的 Coldspeed 建议创建一个新问题以增加难度。
-
@Saturate 为清楚起见修改了您的问题。
-
答案很长,所以很高兴您提出了后续问题。 :-)
标签: python pandas dataframe group-by pandas-groupby