.csv文件中出现意外的dtype

jm2pwxwz  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(115)

我试图整理一些数据,我从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的地方删除行。

kfgdxczn

kfgdxczn1#

您试图将列名"Power"与float值0.0进行比较,这将导致TypeError(不能使用<将字符串与float进行比较)。您需要将“Power”列中的值与0.0进行比较,以过滤具有负值的行:

data.drop(data[data['Power'] < 0.0].index, inplace=True)

相关问题