Python熊猫-使用read_excel或csv时,是否可以通过引用列号来转换数据类型?

Python熊猫-使用read_excel或csv时,是否可以通过引用列号来转换数据类型?,python,excel,pandas,Python,Excel,Pandas,我将从Excel文件中引入一个大型数据集到python数据框架中。目前,我按名称引用每一列,但由于我有30多列,这是相当低效的。请参见下面的示例代码: df=pd.read_excel(Filename, converters={'Business date':str, 'Member Name':str, 'Account':str, 'Currency': str, 'Amount':float}) 是否可以将列0到4引用为字符串,然后将列5引用为浮点等,最多引用30?请注意,df.re

我将从Excel文件中引入一个大型数据集到python数据框架中。目前,我按名称引用每一列,但由于我有30多列,这是相当低效的。请参见下面的示例代码:

df=pd.read_excel(Filename, converters={'Business date':str, 'Member Name':str, 'Account':str,  'Currency': str, 'Amount':float})

是否可以将列0到4引用为字符串,然后将列5引用为浮点等,最多引用30?

请注意,
df.read\u excel
将尝试智能地猜测每个列的数据类型 专栏。它根据前几行中的值进行猜测。你只需要 如果
df.read\u excel
无法正确猜测数据类型,请使用
converters
参数


converters
参数可以接受关键字为列名或顺序索引号的dict。Per:


要构造所需的dict而不必键入所有31个条目,您可以使用dict理解:

In [146]: dict((i,str) if i < 5 else (i,float) for i in range(31))
Out[149]: 
{0: str,
 1: str,
 2: str,
 3: str,
 4: str,
 5: float,
 ...
 30: float}

熊猫不会自动将浮点数读取为浮点数,将字符串读取为字符串吗?转换器只在更繁重的任务中需要。当你尝试时发生了什么?
In [146]: dict((i,str) if i < 5 else (i,float) for i in range(31))
Out[149]: 
{0: str,
 1: str,
 2: str,
 3: str,
 4: str,
 5: float,
 ...
 30: float}
converters = dict((i,str) if i < 5 else (i,float) for i in range(31))
df = pd.read_excel(filename, converters=converters)
df = pd.read_excel(filename, dtype=str)
df.iloc[:, 5:] = df.iloc[:, 5:].astype(float)