gpt4 book ai didi

Python 计算两列中的不同值

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

如果我有一个数据框:

A                         B         C
0.0285714285714285 4 0.11428571
0.107142857142857 4 0.42857143
0.007142857142857 6 0.04285714
1.2 4 5.5
1.5 3 3

期望的输出是;

A*B                    C                       Difference            
0.114285714285714‬ 0.11428571 0.000000004285714‬
0.428571428571428‬ 0.42857143 -0.000000001428572‬
0.042857142857142‬ 0.04285714 0.000000002857142‬
4.8 5.5 -0.7
4.5 3 1.5

Count: 2

我想忽略类似的 3 行,因为差异非常小。仅应包含逗号后的第一个数字。

你能帮我解决这个问题吗?

最佳答案

编辑:

因为 A 列中的值是对象(显然是字符串):

df['A'] = df['A'].astype(float)

如果不起作用,因为错误的值(例如某些字符串) - 错误的值被 NaNs 替换:

df['A'] = pd.to_numeric(df['A'], errors='coerce')

使用Series.mask用于按条件设置新列 Series.between :

#multiple columns
df['A*B'] = df["A"]*df["B"]
#subtract to Series
diff = df['A*B'] - df['C']
#create mask
mask = diff.between(-0.1, 0.1)

df["difference"] = diff.mask(mask, 0)
print (df)
A B C A*B difference
0 0.028571 4 0.114286 0.114286 0.0
1 0.107143 4 0.428571 0.428571 0.0
2 0.007143 6 0.042857 0.042857 0.0
3 1.200000 4 5.500000 4.800000 -0.7
4 1.500000 3 3.000000 4.500000 1.5

print (f'Count: {(~mask).sum()}')
Count: 2

如果订单很重要,请添加 DataFrame.insertDataFrame.pop对于提取列:

df.insert(0, 'A*B',  df.pop("A")*df.pop("B"))
diff = df['A*B'] - df['C']
mask = diff.between(-0.1, 0.1)

df["difference"] = diff.mask(mask, 0)
print (df)
A*B C difference
0 0.114286 0.114286 0.0
1 0.428571 0.428571 0.0
2 0.042857 0.042857 0.0
3 4.800000 5.500000 -0.7
4 4.500000 3.000000 1.5


print (f'Count: {(~mask).sum()}')
Count: 2

关于Python 计算两列中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498949/

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