当我将数据帧列(本质上是浮点型)与浮点值进行比较时,我得到了不想要的结果。我的数据框如下所示:
df
Measurement Year checking
0 4.478861e-04 2015 less
1 4.478861e-04 2015 less
2 4.478861e-04 2015 less
3 4.478861e-04 2015 less
4 4.478861e-04 2015 less
5 4.478861e-04 2015 less
6 4.478861e-04 2015 less
7 4.478861e-04 2015 less
8 6.337777 2015 greater
9 8.903316 2015 greater
10 9.317186 2015 greater
数据帧的数据类型是
Measurement float64
Year int64
checking object
dtype: object
当我使用以下代码过滤数据框时:
df[df['Measurement']> 5.69]
它返回空数据帧。同样,当我使用以下代码尝试使用循环进行比较时:
for i in range(len(df)):
if df.iloc[i,'Measurement'] > 5.69:
print('Comparison is true')
当值大于5.69时,不打印语句。谁能指导为什么代码行为异常?
最佳答案
df[df['Measurement']> 5.69]
似乎对我的数据框有用,我已经添加了代码片段。并添加了带有 if 条件的 for
循环。
import pandas as pd
data = {
'Measurement': [4.478861e-04, 4.478861e-04, 4.478861e-04, 6.337777, 8.903316],
'Year': [2015, 2015, 2015, 2015, 2015],
'checking': ['less', 'less', 'less', 'greater', 'greater']
}
df = pd.DataFrame(data)
print("DataFrame:")
print(df)
result = df.dtypes
print("\nDatatypes:")
print(result)
print("\nMeasurement:")
print(df[df['Measurement']> 5.69])
measurement = df['Measurement']
print("\nMeasurements greater than 5.69:")
for x in measurement:
if x > 5.69:
print(x)
输出:
DataFrame:
Measurement Year checking
0 0.000448 2015 less
1 0.000448 2015 less
2 0.000448 2015 less
3 6.337777 2015 greater
4 8.903316 2015 greater
Datatypes:
Measurement float64
Year int64
checking object
dtype: object
Measurement:
Measurement Year checking
3 6.337777 2015 greater
4 8.903316 2015 greater
Measurements greater than 5.69:
6.337777
8.903316
关于python - 比较Python中的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59693179/