python - 使用 groupby 就地转换 pandas

标签 python pandas in-place

是否可以使用 groupby 语句inplace 来改变 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']

最佳答案

我想你可以使用 transform它返回 Seriesdf 相同的长度和相同的索引并减去:

print (dt.groupby("LETTER")['VALUE'].transform('mean'))
0     5.0
1    13.5
2    13.0
3     5.0
4    13.5
Name: VALUE, dtype: float64

dt['NEW_COL'] = dt['VALUE'] - dt.groupby("LETTER")['VALUE'].transform('mean')
print (dt)
  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

关于python - 使用 groupby 就地转换 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225830/

相关文章:

python - 如何根据多个条件用字符串拆分 Pandas 数据框列

c++ - 我可以在 Rust 中就地构建吗?

python - 如何使用 python 在我的 youtube 历史记录中获取最后观看的视频?

python - 存储相关矩阵的上半部分/下半部分

python - Dataframe列像groupby但不是怎么办?

python - NoneType 对象不是 Pandas 中的可迭代错误

Python 自动将一些字符串转换为原始字符串?

python - 滚动窗口不包括当前行

python - 快速排序中间列表打印Python

c++ - 就地旋转二维矩形阵列