我有一个例子:
import pandas as pd
import numpy as np
a=[['1','221,51','413,56','636,07'],['13','213','131.86','357,86'],['49','239.83','-238.83','10']]
df = pd.DataFrame(a)
repl_list = {',': '.'}
df.replace(repl_list, regex=True, inplace=True)
df[0] = df[0].astype(float)
df[1] = df[1].astype(float)
df[2] = df[2].astype(float)
df[3] = df[3].astype(float)
df['SUM'] = df.loc[df[0] >= 0, [0, 1, 2]].sum(axis=1)
df['SUM'] = df['SUM'].astype(float)
df['SUM'].fillna(0, inplace=True)
df['T/F'] = np.where((df['SUM'] >= df[3]), True, False)
a = df.loc[df['T/F'] == False]
print(df)
如果sum [3] == SUM列,则应为True,否则为False
为什么使用此代码的结果是:
0 1 2 3 SUM T/F
0 1.0 221.51 413.56 636.07 636.07 False
1 13.0 213.00 131.86 357.86 357.86 True
2 49.0 239.83 -238.83 10.00 50.00 True
为什么在2中显示为true,即使它应该为false? 第一行中存在相同的问题-应该为true。
How does this float converter work?
When I add to a[]
values ['49','239.83','-288.83','10']
output looks like:
0 1 2 3 SUM T/F
0 1.0 221.51 413.56 636.07 6.360700e+02 False
1 13.0 213.00 131.86 357.86 3.578600e+02 True
2 49.0 239.83 -238.83 10.00 5.000000e+01 True
3 49.0 239.83 -288.83 10.00 5.684342e-14 False
为什么看起来像这样?错误在哪里,该浮点数是什么样的?请说明其工作方式以及为什么会出现错误。