【发布时间】:2017-07-02 17:22:21
【问题描述】:
是否可以用groupby 语句对DataFrame 就地进行变异?
import pandas as pd
dt = pd.DataFrame({
"LETTER": ["a", "b", "c", "a", "b"],
"VALUE" : [10 , 12 , 13, 0, 15]
})
def __add_new_col(dt_):
dt_['NEW_COL'] = dt_['VALUE'] - dt_['VALUE'].mean()
return dt_
pass
dt.groupby("LETTER").apply(__add_new_col)
LETTER VALUE NEW_COL
0 a 10 5.0
1 b 12 -1.5
2 c 13 0.0
3 a 0 -5.0
4 b 15 1.5
dt
LETTER VALUE
0 a 10
1 b 12
2 c 13
3 a 0
4 b 15
在 R data.table 中,可以使用 := 运算符,例如dt[, col := ... , by ='LETTER']
【问题讨论】:
-
为什么不
df['NEWCOL'] = dt.groupby('LETTER')['VALUE'].apply(lambda x: x - x.mean())? -
@JohnGalt 有订单保证吗?
-
是的,您也可以自己验证。