【问题标题】:Need help Exporting a dataframe into multiple CSVs based on a the values in a column - Python需要帮助根据列中的值将数据框导出到多个 CSV - Python
【发布时间】:2020-09-26 17:59:37
【问题描述】:

我正在尝试根据“位置”列中的值将数据框导出到多个 csv 中。我对这一切都很陌生,但下面的代码似乎只是一遍又一遍地重写文件。我有 800 万行数据和 500 个唯一位置。我想导出数据框中的所有列,但每个列只有一个位置对应的数据。示例列是:['Location', 'Time', 'Mark']

另外,我希望 CSV 的文件名是“位置”

#SaveAs 以 Location 作为文件名的单独 CSV: df =

pd.DataFrame(np.array([['A'] * 9 + ['B'] * 9,
                            list(range(1, 10)) + list(range(1, 10)),
                            [0]*2 + [1]*2 + [0]*2 + [1]*2 + [0]*5 + [1]*1 + [0]*1 + [1]*2 + [0]*1]).transpose(), columns = ['LOCATION', 'Time', 'Mark'])
df.head()

path = r'C:\Users\Y\Desktop\Files\'

for ln in df.LOCATION.values:
    df_LN = df[df.LOCATION == ln]

    Output = path + ln + ".csv"

    df_LN.to_csv(Output, index=False)

【问题讨论】:

  • 你能发布 df.head() 以便我们看看可以做什么吗?
  • @ Gokturk Sahin,我只是在问题中放了一个示例 df - 它适用于这个数据帧,但是当我在真实文件上测试它时,它只是不断重写文件。它们是否是字符串。循环遍历的行数是否有某种限制?

标签: python pandas dataframe csv export


【解决方案1】:

如果我理解得很好,您想为每个索引输出到不同的文件。这可以通过groupby 函数来完成;

path = r'C:\Users\Y\Desktop\Files\\'

# index as a column 
df = df.reset_index()

# group by index ('a', 'b', ...)
for label, group in df.groupby('index'):

    # create the ouput file's name
    out_path = path + label + '.csv'

    # group is a df
    group.to_csv(out_path, index=False)

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2022-01-03
    相关资源
    最近更新 更多