Jupyter笔记本电脑/Pandas数据帧如何处理具有相似值的多列



当我有从多个来源收集数据的数据框架时,我正在寻找如何解决问题的方面。例如,我可以有不同的过滤器,如G、Z、Y,但由于我从多个不同的源收集数据,我可能有多个不同Y列,例如Y1、Y2、Y3。

然后我将计算一个列,它是G-Y。

Y2Y3Y-G-99>空-99<1>0
id G Y1
1 20 0NA
2 151904
3 17 1819
4 19 -99 0

您可以使用一个简单的替换来执行数据清理步骤:

cleaned = df.replace(['null', -99, 0], nan).drop(columns=['Y-G'])
id   G    Y1    Y2    Y3
0   1  20   NaN   NaN   NaN
1   2  15   NaN  19.0   NaN
2   3  17  18.0   NaN  19.0
3   4  19  19.0   NaN   NaN

然后你可以使用过滤器&对列进行回填,以获得最早看到的Y值。然后取该输出,并从中减去计算列的G列:

cleaned['Y-G'] = cleaned.filter(like='Y').bfill(axis=1).iloc[:, 0] - cleaned['G']
print(cleaned)
id   G    Y1    Y2    Y3  Y-G
0   1  20   NaN   NaN   NaN  NaN
1   2  15   NaN  19.0   NaN  4.0
2   3  17  18.0   NaN  19.0  1.0
3   4  19  19.0   NaN   NaN  0.0

最新更新