栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将read_excel与转换器一起用于将Excel文件读取到Pandas DataFrame中会导致对象类型的数字列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将read_excel与转换器一起用于将Excel文件读取到Pandas DataFrame中会导致对象类型的数字列

让我们

converters
暂时删除该参数-

c = ['Energy Supply', 'Energy Supply per Capita', '% Renewable']df = pd.read_excel("Energy Indicators.xls",         skiprows=17,         skip_footer=38,         usecols=[2,3,4,5],         na_values=['...'],         names=c,        index_col=[0])df.index.name = 'Country'df.head()         Energy Supply  Energy Supply per Capita  % RenewableCountry      Afghanistan  321.010.0    78.669280Albania      102.035.0   100.000000Algeria     1959.051.0     0.551010American Samoa NaN NaN     0.641026Andorra        9.0          121.0    88.695650df.dtypesEnergy Supply    float64Energy Supply per Capita    float64% Renewable      float64dtype: object

没有转换器,数据加载就很好。有一个技巧可以理解为什么会发生这种情况。

默认情况下,

pandas
将读入该列并尝试“解释”您的数据。通过指定自己的转换器,可以覆盖熊猫转换,因此不会发生这种情况。

熊猫将整数和字符串值传递到了

convert_energy
,因此
isinstance(energy,float)
永远不会求到
True
。而是
else
运行,并且这些值按原样返回,因此您得到的列是字符串和整数的混合。如果
print(type(energy))
在函数内部放一个,这很明显。

由于您混合使用类型,因此结果类型为

object
。但是,如果您不使用转换器,熊猫将尝试解释您的数据,并将成功将其解析为数字。

因此,只需-

df['Energy Supply'] *= 1000000

会绰绰有余。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号