【问题标题】:Unable to create csv files from Pandas DataFrame using to_csv() method无法使用 to_csv() 方法从 Pandas DataFrame 创建 csv 文件
【发布时间】:2014-05-20 23:37:30
【问题描述】:

我有一个 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  

【问题讨论】:

  • 试试outdf.to_csv(outfile, sep="\t") 没试过,但我想你只是洗牌了。

标签: python csv pandas


【解决方案1】:

.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')

【讨论】:

  • 这是正确的,对我来说很有意义。为每个组创建了一个 csv 文件并正确分隔。非常感谢
【解决方案2】:

我没有看到应该是第一个参数的输出路径和/或文件名。我认为这就是为什么它没有看到第一个所需的输入而令人窒息的原因。看起来您正在将 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")

【讨论】:

    猜你喜欢
    • 2014-02-20
    • 2012-08-28
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2019-09-27
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多