gpt4 book ai didi

python - 比较数据框中特定列的差异

转载 作者:行者123 更新时间:2023-12-01 02:02:45 25 4
gpt4 key购买 nike

作为Python中数据比较的一部分,我有一个数据帧的输出。如您所见,PROD_PROJ_ 数据进行了比较。

enter image description here

示例:

print (df)
PROD_Label PROJ_Label Diff_Label PROD_OAD PROJ_OAD \
0 Energy Energy True 1.94 1.94
1 Food and Beverage Food and Beverage True 1.97 1.97
2 Healthcare Healthcare True 8.23 8.23
3 Consumer Products Consumer Products True 3.67 NaN
4 Retailers Retailers True 5.88 NaN

Diff_OAD PROD_OAD_Tin PROJ_OAD_Tin Diff_OAD_Tin
0 True 0.02 0.02 True
1 True 0.54 0.01 False
2 True 0.05 0.05 True
3 False 0.02 0.02 True
4 False 0.06 0.06 True

PROD_LabelPROJ_Label这样的字符串列是“非空对象”。这里的比较结果为真/假,符合预期。

对于数字列,例如 PROD_OADPROJ_OADPROD_OAD_TinPROJ_OAD_Tin 是“非空 float64” 。目前我的输出显示比较为真和假(如上所述)。但我希望这与实际差异相同,如下所示,但仅适用于数字列。

enter image description here

有没有办法指定特定的列名称并获取要转储到 Diff_ 列中的结果差异。

请注意,我不想比较所有 PROD_PROJ_ 列。字符串的差异在真/假中已经是正确的。只是寻找一些数字格式的特定列。

最佳答案

我认为,如果仅存在具有相同结构的数字列,则可以仅提取数字列并获取在 forsub 中使用的唯一值。 :

a = df.select_dtypes([np.number]).columns.str.split('_', n=1).str[1].unique()
print (a)
Index(['OAD', 'OAD_Tin'], dtype='object')

for x in a:
df['Diff_' + x] = df['PROJ_' + x].sub(df['PROD_' + x], fill_value=0)
print (df)
PROD_Label PROJ_Label Diff_Label PROD_OAD PROJ_OAD \
0 Energy Energy True 1.94 1.94
1 Food and Beverage Food and Beverage True 1.97 1.97
2 Healthcare Healthcare True 8.23 8.23
3 Consumer Products Consumer Products True 3.67 NaN
4 Retailers Retailers True 5.88 NaN

Diff_OAD PROD_OAD_Tin PROJ_OAD_Tin Diff_OAD_Tin
0 0.00 0.02 0.02 0.00
1 0.00 0.54 0.01 -0.53
2 0.00 0.05 0.05 0.00
3 -3.67 0.02 0.02 0.00
4 -5.88 0.06 0.06 0.00

关于python - 比较数据框中特定列的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com