【问题标题】:How to write one particular column present in multiple dataframe to a list using python?如何使用python将多个数据框中存在的一个特定列写入列表?
【发布时间】:2019-10-06 14:12:24
【问题描述】:

我在一个文件夹中有 4 个 csv 文件,我将它们单独加载为 python 中的数据帧作为数据帧。我处理这些数据帧中的每一个,以将唯一的“文件名”单独作为一个列表并将其写入一个新的 csv 文件。

现在我想将所有数据帧的所有文件名写入输出文件。

file_list=[]
for fileno in data.groupby(['date','age'])['File_No']:
    file_list.append(fileno)
with open(r'D:\Data\core_data\file1.csv', "w") as csvFile:
    writer = csv.writer(csvFile)
    writer.writerows(file_list)

这里的数据是一个数据帧。这会产生此数据框中存在的文件名列表,如下所示:

[((Timestamp('2018-01-15 00:00:00'), '1', 1), 0      1011
  1      1012
  2      1013
  3      1014...]

所以我需要两件事:

  1. 我不想在列表输出中出现'((Timestamp('2018-01-15 00:00:00'), '1', 1)'。

  2. 所有数据帧的列表应写入一个列表列表:

[[file_1 文件名列表],[file_2 文件名列表],[ file_3 文件名]]

【问题讨论】:

    标签: python file csv dataframe


    【解决方案1】:

    您打算正确获取 4 个 csv 文件中存在的文件名列表吗?

    在这种情况下,为什么不遍历 CSV 文件并获取预期的列表,如下所示:

    import pandas as pd
    files = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv']
    
    output = []
    for file in files:
        temp_df = pd.read_csv(file) 
        output.append([x for x in list(temp_df['File_No'].unique()) if type(x) == int])
    
    #write output to csv...
    

    【讨论】:

    • 是的。这可行,但有没有办法删除列表中填充的“(Timestamp('2018-01-15 00:00:00'),'1',1)”?
    • 好吧,如果没有看到原始数据很难判断,但理论上你不应该有 "(Timestamp('2018-01-15 00:00:00'), '1', 1) " 在您的输出列表中,除非它填充在 File_No 列中。如果你想摆脱它,你可以从你的输出变量中过滤掉不是整数的东西。该帖子已进行相应编辑。
    猜你喜欢
    • 2018-06-21
    • 2019-02-22
    • 1970-01-01
    • 2021-10-21
    • 2016-12-03
    • 2023-03-20
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多