无法使用to_csv()方法从Pandas DataFrame创建csv文件

时间:2014-05-20 23:37:31

标签: python csv pandas

我有一个DataFrame df,我根据属性对其进行了分组。我试图将每个组写入自己的csv文件。我尝试过使用pandas.DataFrame.to_csv()方法。我收到以下错误。

outcsv = pd.DataFrame.to_csv(outdf, sep = "\t")         
TypeError: to_csv() takes at least 2 arguments (2 given)

我使用的代码如下。

def groupChromosomes(filepath, groupbykey, sep):
import csv
import pandas as pd
df = pd.read_csv(filepath, sep = sep )
d2 = df.groupby(groupbykey)
for name, group in d2:
    with open(name+'.csv', 'w') as outfile:
        outdf = pd.DataFrame(group)     
        #print outdf
        outcsv = pd.DataFrame.to_csv(outdf, sep = "\t")         
        return outcsv  

2 个答案:

答案 0 :(得分:3)

.to_csv()是一种数据框对象的方法,因此您应该从要导出的对象中调用它。另外,你真的不想从函数中返回它,因为所有方法都是写文件。

你的循环应该如下:

for name, group in d2:
    # I'm not even sure if this step is necessary, you should
    # probably be able to do group.to_csv() directly 
    outdf = pd.DataFrame(group)
    outdf.to_csv(name + '.csv', sep='\t')

答案 1 :(得分:0)

我没有看到输出路径和/或文件名,这应该是第一个参数。我认为这就是它因为没有看到第一个必要的输入而窒息的原因。看起来你正在传递一个pandas数据帧作为第一项。看这里 - http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.to_csv.html

所以它应该是这样的:

outdf.to_csv('path\to\file', sep="\t")