首页 > 解决方案 > 如何在 Pandas Python 3.X 中划分两个数据帧,并将 NaN、inf 值替换为 0

问题描述

这是我的代码:

mean= all_data.groupby(['Id'])[features].agg('mean').reset_index()

all_data = pd.merge(all_data, mean, suffixes=["", "_mean"], how='left', on=['Id'])

现在,我想向 all_data 框架添加另一列,如下所示:

meanDivide = all_data[features] / mean
all_data = pd.merge(all_data, meanDivide, suffixes=["", "_meanDivide"], how='left', on=['Id'])

我想将它加入Idall_data。然后Nan inf在 pandas 中将 value 替换为 0。我几乎花了一整天的时间在这上面,但还是有问题。

编辑:我all_data看起来像这样:

ID 行 1 行 2 1 6 0 2 5 3 3 2 2 4 0 0 5 3 8

features变量,像这样:

features = ['Row1','Row2']

CSV 格式的数据:

Id,Row1,Row2
1,6,0
2,5,3
3,2,2
4,0,0
5,3,8

标签: pythonpandasdataframe

解决方案


首先你不需要merge

newdf=all_data.groupby(['Id'])[features].transform('mean')
newdf2=all_data[features]/newdf

pd.concat([all_data,newdf.add_suffix('_mean'),newdf2.add_suffix('_meanDivide')],axis=1)

推荐阅读