gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:17 24 4
gpt4 key购买 nike

我正在将一个大型数据集从 Excel 文件引入到 python pandas 数据框中。目前,我按名称引用每个列,但由于我有 30 个左右的列,因此效率相当低。请参阅下面的示例代码:

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

是否可以将第 0 至 4 列引用为字符串,然后将第 5 列引用为 float ,等等,最多可达 30?

最佳答案

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

<小时/>

converters 参数可以接受一个字典,其键可以是列名或序数索引号。每the docs :

converters : dict, default None

Dict of functions for converting values in certain columns. Keys can
either be integers or column labels, values are functions that take one
input argument, the Excel cell content, and return the transformed
content.
<小时/>

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

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)
<小时/>

对于列中的每个值,每个转换器函数都会调用一次。这样可以需要大量函数调用,并且对性能不利。

因此,更快的替代方法是将整个数据帧作为字符串读取,然后使用 astype将某些列转换为 float :

df = pd.read_excel(filename, dtype=str)
df.iloc[:, 5:] = df.iloc[:, 5:].astype(float)

关于Python Pandas - 使用 read_excel 或 csv 时是否可以通过引用列号来转换数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com