在pandas中按列编写csv文件会引发错误

时间:2015-06-10 06:49:49

标签: python csv pandas pandas-datareader

我正在使用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

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

1 个答案:

答案 0 :(得分:2)

v0.16.0的变化

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

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

尝试使用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()