我想将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和{a2}(以及其他地方)可能是最好的选择。但是,我收到一条消息,它已被弃用(我使用的是Pandas 0.17.1),应该改为使用to\u numeric。在
^{pr2}$输出:
FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.
但tou 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并处理警告消息,还是有适当的方法将其转换为numeric?在
奇怪的是,这样做:
似乎它不能强迫整个df出于某种原因,这有点令人惊讶
如果你讨厌打字(感谢@Zero),那么你可以使用:
^{pr2}$您可以尝试^{} 和{a2}:
相关问题 更多 >
编程相关推荐