從這個問題,下面就進行逐行計算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