我想将 pandas 数据框中的所有值从字符串转换为 float 。我的数据框包含各种 NaN 值(例如 NaN、NA、None)。例如,
import pandas as pd
import numpy as np
my_data = np.array([[0.5, 0.2, 0.1], ["NA", 0.45, 0.2], [0.9, 0.02, "N/A"]])
df = pd.DataFrame(my_data, dtype=str)
我找到了 here和 here (在其他地方) convert_objects 可能是要走的路。但是,我收到一条消息,指出它已被弃用(我使用的是 Pandas 0.17.1),应该改用 to_numeric。
df2 = df.convert_objects(convert_numeric=True)
输出:
FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.
但是 to_numeric 似乎并没有实际转换字符串。
df3 = pd.to_numeric(df, errors='force')
输出:
df2:
0 1 2
0 0.5 0.20 0.1
1 NaN 0.45 0.2
2 0.9 0.02 NaN
df2 dtypes:
0 float64
1 float64
2 float64
dtype: object
df3:
0 1 2
0 0.5 0.2 0.1
1 NA 0.45 0.2
2 0.9 0.02 N/A
df3 dtypes:
0 object
1 object
2 object
dtype: object
我应该使用 convert_objects 并处理警告消息,还是有适当的方法来使用 to_numeric 做我想做的事情?
最佳答案
奇怪的是,这有效:
In [11]:
df.apply(lambda x: pd.to_numeric(x, errors='force'))
Out[11]:
0 1 2
0 0.5 0.20 0.1
1 NaN 0.45 0.2
2 0.9 0.02 NaN
由于某种原因,它似乎无法强制转换整个 df
如果你讨厌打字(感谢@Zero)那么你可以使用:
df.apply(pd.to_numeric, errors='force')
关于python - 将包含 NaN 值的整个 Pandas 数据框从字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949412/