python - 如何用另一个过滤的数据框更新数据框
问题描述
我有 2 个数据框。我需要用第二个中的平均值更新第一个中的一列,按索引分组。这里是一个例子 df1 (col1 是索引)
col2 col3
col1
a 0 X
b 0 0
c 0 0
d 0 0
df2(col1 是索引)
col2 col3
col1
a 1 0
a 3 0
d 2 0
d 4 0
我需要 df2 的 col2 (a=2, d=3) 的平均值,并且只为 col3 = X 的行更新 df1
我试过这个
df1.loc[df1.col3=='X'].update(df2.groupby(df2.index),'col2'].mean().to_frame())
它仅在我不使用 loc 时才有效。
我试图拥有 df1 的结果(col1 是索引)
col2 col3
col1
a 2 X
b 0 0
c 0 0
d 0 0
解决方案
利用:
m=df2.groupby(df2.index).col2.mean()
df1.loc[df1.col3=='X','col2']=m
print(df1)
col2 col3
col1
a 2 X
b 0 0
c 0 0
d 0 0
推荐阅读
- c++ - 找不到 -lSDL_image
- javascript - 如何从我拥有的变量值创建条件?
- python - python 无法在 64 位 Windows 上加载 64 位 DLL
- adobe-brackets - 如何修复与“ws:localhost:8125/”的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED?
- javascript - 这个变量声明表是什么意思?
- python-3.x - 在 Python 中格式化字符串切片所需的输出
- highcharts - Highcharts xrange 拒绝展示向下钻取行为
- javascript - Tracker.autorun 中的订阅导致发布回调多次触发
- javascript - Javascript 的 string.split 的准确定义是什么?
- c# - 如何使变换每秒旋转 n 次?