Python 将系列类型从对象转换为浮点64
我有一个数据帧(Python 将系列类型从对象转换为浮点64,python,pandas,Python,Pandas,我有一个数据帧(energy[“energy Supply”])中的列(类型系列),如下所示: Country China 127191 United States 90838 Japan 18984 United Kingdom 7920 Russian Federation 30709 Canada 10431 Germany
energy[“energy Supply”]
)中的列(类型系列),如下所示:
Country
China 127191
United States 90838
Japan 18984
United Kingdom 7920
Russian Federation 30709
Canada 10431
Germany 13261
India 33195
France 10597
South Korea 11007
Italy 6530
Spain 4923
Iran NaN
Australia 5386
Brazil 12149
Name: Energy Supply, dtype: object
目前它是object类型
NaN
值是从此代码转换而来的:
peta = row["Energy Supply"]
if peta == "...":
# pd.to_numeric(row["Energy Supply"], errors='coerce')
row["Energy Supply"] = np.NaN
注释行的工作方式类似
我不明白为什么这个系列现在是object类型
我检查了每个数值,它们都是float
类型
我希望整个系列的类型为float
或float64
我尝试通过执行以下操作将整个系列再次转换为数字:
energy["Energy Supply"] = pd.to_numeric(energy["Energy Supply"], errors='coerce')
但在此之后,该系列被改为:
Country
China NaN
United States NaN
Japan NaN
United Kingdom NaN
Russian Federation 30709.0
Canada 10431.0
Germany 13261.0
India 33195.0
France NaN
South Korea NaN
Italy NaN
Spain NaN
Iran NaN
Australia NaN
Brazil 12149.0
Name: Energy Supply, dtype: float64
我想知道为什么值
127191
,90838
被转换成NaN
,而30709
,10431
仍然是数字?试试df['Energy Supply'].astype(float)
。我猜你有一些嵌入的非打印字符。尝试pd.to\u numeric(第[“能源供应”].str.replace('[^\d-\.]',''),errors='improve')
@piRSquared我尝试了pd.to\u numeric(第[“能源供应”].str.replace('[^\d-\.]',''),errors='improve')
。得到了同样的结果。嗯,这很奇怪。除非我们能复制数据,否则我们帮不了你。您所拥有的看起来很正常。@HarvIpan谢谢您的评论。虽然您的行给我的结果与行energy[“energy Supply”]=pd.to_numeric(energy[“energy Supply”])的结果相同,但errors='concurve')