我有一个
的excel文件 gdp gdp (2009)
1929 104.6 1056.7
1930 173.6 962.0
1931 72.3 846.6
我想在文件中读取并指定第一列(没有标题信息)是整数。我不需要B栏
我正在使用以下
阅读文件import pandas as pd
from pandas import ExcelFile
gdp = pd.read_excel('gdpfile.xls, skiprows = 2, parse_cols = "A,C")
这读得很好,除了几年都变成花车,例如1929.0,1930.0,1931.0。前两行是NaN。
我想指定它应该是整数。我已按照Python pandas: how to specify data types when reading an Excel file?的建议尝试在converters = {"A":int,"C":float}
命令中添加read_excel
,但这并没有解决问题。
我尝试转换事实之后,我之前已经将字符串转换为float,但这也无效。
gdp.columns = ['Year','GDP 2009']
gdp['Year'] = gdp['Year'].astype(int)
我也尝试按照上述链接中的一条评论中的建议使用dtypes = int
,但这也不起作用。
请注意skiprows
是必要的,因为我的实际Excel文件顶部有几行我不想要。
答案 0 :(得分:0)
根据此处给出的样本,标题后面有两个空白行。因此,如果您想要标题,您可以在范围内提供跳过行:
pd.read_excel("test.xls",parse_cols="A,C",skiprows=[1,2])
另外,请您确认该列中是否还有其他NaN细胞。如果列中有NaN值,则列dtype将提升为float。 请参阅以下链接: http://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na
另请注意,由于未给出第一列标题,因此导入时会将第一列作为索引。 为避免这种情况,我遵循了以下步骤:
我的excel文件看起来像这样
NaN gdp gdp (2009)
NaN NaN NaN
NaN NaN NaN
1929 104.6 1056.7
1930 173.6 962
1931 72.3 846.6
NaN NaN NaN
1952 45.3 56.6
我删除了默认标头并添加了标头以避免索引问题:
test = pd.read_excel("test.xls",skiprows=[0,3],header=None,names=['Year','gdp (2009)'],parse_cols="A,C")
如上所述,由于列包含NaN值,因此列类型将转换为float。您可以使用0或其他值来删除或填充na值。在这种情况下,我正在删除na行。
test = test.dropna(axis=0, how='all')
删除NaN值后,可以使用astype将其转换为int
test['Year']=test.Year.astype(int)
请检查这是否适合您,如果您需要更多说明,请与我们联系。 谢谢,