【问题标题】:writing a csv file by column in pandas throws error在 pandas 中按列写入 csv 文件会引发错误
【发布时间】:2015-08-25 06:33:40
【问题描述】:

我正在使用 pandas 读写一个 csv 文件。

我正在逐列读取 csv 文件并将其逐列写入单独的 csv 文件,读取工作正常,但在写入 csv 文件时会出错

import pandas
f1 = open('artist_links','a')
data_df = pandas.read_csv('upc1.upcs_result.csv')
#data_wr = pandas.to_csv('test.csv')

df = data_df['one']
dd = data_df['two']
header = ["df", "dd"]
df.to_csv("test.csv",columns = header)

输出:

Traceback (most recent call last):
  File "merge.py", line 9, in <module>
    df.to_csv("test.csv",columns = header)
TypeError: to_csv() got an unexpected keyword argument 'columns'

但是这里实际上有一个列参数pandas library

我怎样才能使这个程序工作(逐列编写)

【问题讨论】:

  • 你的熊猫版本是什么?
  • 0.13.1 @AlexanderHuszagh
  • 这是你的问题。我会发布一个答案。
  • 能否提供您正在阅读的 csv 样本
  • @VigneshKalai 我收到此错误“ValueError: Writing 1 cols but got 2 aliases”

标签: python csv pandas pandas-datareader


【解决方案1】:

v0.16.0 中的变化

http://pandas.pydata.org/pandas-docs/dev/whatsnew.html

作为 csv 和 Excel 编写器的关键字的 cols 已替换为列。

改用 cols 或升级 pandas。

代替:

df.to_csv("test.csv", columns=header)

用途:

df.to_csv("test.csv", cols=header)

编辑:无论哪种方式,您都应该升级。真挚地。如果错误是关键字参数,并且您的方法基于 1.5 年前编写的软件的最新版本的文档,并且从那时起进行了重大更改,则应该升级。

EDIT2:如果您不顾一切地让自己的生活变得困难并继续使用过时的功能并尝试使用新功能,您可以做一些变通方法。不建议这样做,因为有些东西可能会更加微妙,并且会在您最不期望的时候抛出异常。

你可以……做……

lst = []
for column in header:
    s = df[column]
    # export all to list and nested
    lst.append(s.tolist())
# zip resulting lists to tuples
zipped = zip(*lst)
# export them as a CSV.
print '\n'.join([','.join(i) for i in zipped])

EDIT3:简单得多,但您也可以这样做:

df2 = df[header]   # return copy
df2.to_csv()

【讨论】:

  • 你能升级你的熊猫版本吗?说真的:0.13.1 是很久以前的事了。您正在使用 1.5 年前编写的软件的新功能文档。 >>> a = pd.DataFrame(index=range(5), columns=range(5)) >>> a.to_csv(columns=[1,5]) ',1,5\n0,,\n1, ,\n2,,\n3,,\n4,,\n'
  • 那我该如何升级呢?
  • 如果你有 pip 你可以这样做:sudo pip install pandas --upgrade
  • 假设您在 Mac OS X 或 Linux 系统(*Nix 系统)上安装,并且您有 pip 并且您正在安装到根目录。如果您使用的是 Windows,请在此处获取二进制文件:lfd.uci.edu/~gohlke/pythonlibs 安装 pip,然后安装轮子(如果没有):pip.pypa.io/en/latest/installing.html
  • 我刚刚在 17.1 版中遇到了这个错误,很有趣。相同的代码也可以在其他地方使用
猜你喜欢
  • 1970-01-01
  • 2019-01-17
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2018-09-22
相关资源
最近更新 更多