gpt4 book ai didi

python - 要指定列名称,为什么 `pd.read_csv` 和 `pd.DataFrame` 使用相同的参数名称?

转载 作者:行者123 更新时间:2023-12-01 18:04:33 25 4
gpt4 key购买 nike

在使用 pandas 时,我遇到了创建新 data-Frame 的两种最常见的方法。使用pandas如下;

1. pandas.read_csv() Type: < class 'pandas.core.frame.DataFrame' >

2. pandas.DataFrame() Type: < class 'pandas.core.frame.DataFrame' >

两者都使用不同的参数来获取 list 列名称作为输入。

<小时/>

语法:

  • 对于 pd.read_csv 是给定的;

    pandas.read_csv(filepath, sep=',', delimiter=None, header='infer', names=None)
  • 对于 pd.DataFrame 是给定的;

    pd.DataFrame(data=None, index=None, columns=None)

我应该更喜欢更改参数 "names""columns"pandas.read_csv() 。这有什么意义吗?

<小时/>

之后再次保存data-frames使用 df.to_csv 转换为 CSV 文件 ,我们使用参数名称columns如给定的。

df.to_csv(self, path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None)

上述技术可以更改为 columns在Python中?

最佳答案

有一些discussion关于 pandas 中的这种不一致。看来提议的更改与您的建议一致。尽管如此,开发商尚未得出结论。因此,到目前为止,您可能无法在 pd.read_csv 方法中使用参数 columns 作为 names 的别名。

如果您尝试将作为参数传递,您将遇到以下错误:

TypeError: parser_f() got an unexpected keyword argument 'columns'

幸运的是,您可以使用装饰器来实现您所需要的:

import pandas as pd
from functools import wraps

def enable_columns_parameter(f):
@wraps(f)
def wrapper(*args, **kwargs):
if 'columns' in kwargs:
kwargs['names'] = kwargs.pop('columns')
return f(*args, **kwargs)
return wrapper

pd.read_csv = enable_columns_parameter(pd.read_csv)

将装饰器应用到 pd.read_csv 函数后,此行可以正常工作,不会出现任何错误:

pd.read_csv('file.csv', columns=['any', 'given', 'name'])

关于python - 要指定列名称,为什么 `pd.read_csv` 和 `pd.DataFrame` 使用相同的参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59590566/

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