我有一个Pandas列,其中包含NAs,NaN和浮点数(列的dtype是'Object')。我正在努力将NAs转换为NaN。我想用NaN替换NA,然后将列dtype更改为float。
我尝试过使用各种方法来替换NA。例如:
df.data.astype('float', inplace=True)
ValueError: could not convert string to float: NA
df.data[df.data == 'NA']
Series([], Name: data, dtype: object) # empty
在阅读csv时,我也尝试使用na_values ='NA'参数。希望你能帮忙。谢谢。
答案 0 :(得分:0)
这有效:
df.data = pd.to_numeric(df.data, errors='coerce')
答案 1 :(得分:0)
你可以试试这个:
import pandas as pd
import numpy as np
df = pd.DataFrame([1, 2, 3, 4, 5, 'NA', 6, 7, 'NaN', 'Stuff'], columns=['Col1'])
rem_fields = (r'[^.0-9]')
rep_with = (np.nan)
df['Col1'].replace(regex=True, inplace=True, to_replace=rem_fields, value= rep_with)
print df
'rem_fields'告诉大熊猫更换任何不是数字或''的东西。与NaN
这是输出:
Col1
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
5 NaN
6 6.0
7 7.0
8 NaN
9 NaN