我试图整理一些数据,我从CSV文件导入。我正在尝试删除“有功功率”列中所有负值的行。
我使用Python 3。
- 使用
pd.read_csv()
导入csv文件 - 使用
.astype('float')
将dtype指定为float
当我试着把合适的细胞
TypeError:'str'和'float'的示例之间不支持'<'
代码如下:
data = pd.read_csv('data.csv')
data['Control'] = data['Control'].astype('float')
data['Power'] = data['Power'].astype('float')
print(data.dtypes)
nan_counter = data.isna().sum()
print(nan_counter)
Control float64
Power float64
dtype: object
Control 0
Power 0
dtype: int64
问题部件:
data = data.drop(data[data["Power" < 0.0]].index, inplace = True)
错误代码:
TypeError:'str'和'float'的示例之间不支持'<'
如果我将数据类型设置为int并使用< 0而不是< 0.0,我会得到相同的错误(在那种情况下,是str vs int
关于dataframe的其他信息:
print(data) #data before attempting to filter negative power values
Control Power
249182 0.3 -8.82
132350 0.3 -7.08
56440 -0.2 -4.66
265662 2.8 -1.17
283739 -0.4 0.00
... ... ...
35526 98.5 906.23
35475 98.5 906.23
35338 98.6 906.25
35834 98.5 906.28
35793 98.5 906.39
[286996 rows x 2 columns]
print(cleanish_data) #dataframe after removing 'negative values'
Control Power
143497 -0.3 0.0
172367 0.1 0.0
172366 0.2 0.0
172365 0.2 0.0
172364 0.2 0.0
... ... ...
201443 0.2 0.0
201460 0.1 0.0
201445 0.2 0.0
201444 0.2 0.0
201446 0.2 0.0
[137023 rows x 2 columns]
改进的结果(添加括号)代码,似乎放弃一切,但power = 0
。预期在幂小于0的地方删除行。
1条答案
按热度按时间kfgdxczn1#
您试图将列名
"Power"
与float值0.0进行比较,这将导致TypeError(不能使用<
将字符串与float进行比较)。您需要将“Power”列中的值与0.0进行比较,以过滤具有负值的行: