从这个问题,下面就进行逐行计算GROUPBY和使用自定义功能
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
。我如何修改此代码以符合我的新要求?
的可能的复制[蟒 - 通过并添加新的行组,其是其他行的计算](https://stackoverflow.com/questions/46446863/python-group-by-and-add-new-其他行的行计算) – zipa
在看到coldspeed的答案之前,我有你正在寻找的解决方案。 – Dark
不是重复的@zipa,它是从这个问题开始的。 Coldspeed回答了这个问题,建议为增加的难度创造一个新问题。 – Saturate