【问题标题】:Need to pick 'second column' from multiple csv files and save all 'second columns' in one csv file需要从多个 csv 文件中选择“第二列”并将所有“第二列”保存在一个 csv 文件中
【发布时间】:2019-10-18 23:21:26
【问题描述】:

所以我有 366 个 CSV 文件,我想复制它们的第二列并将它们写入一个新的 CSV 文件。需要这个工作的代码。我在这里尝试了一些可用的代码,但没有任何效果。请帮忙。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 请更新此问题以提供展示您努力的工作,以便用户可以帮助您解决导致您失败的错误。你会更幸运地找到帮助,因为这个社区不是为了请求人们为你做你的工作。您提供的工作不仅要展示您所做的尝试,还要清楚地描述您需要帮助克服的失败。

标签: python pandas csv export-to-csv opencsv


【解决方案1】:

假设所有第二列的长度相同,您可以简单地遍历所有文件。阅读它们,将第 2 列保存到内存中,并在此过程中构造一个新的 df。

filenames = ['test.csv', ....]

new_df = pd.DataFrame()

for filename in filenames:
    df = pd.read_csv(filename)
    second_column = df.iloc[:, 1]
    new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
    del(df)

new_df.to_csv('new_csv.csv', index=False)

【讨论】:

  • 您好 Dominik,感谢您分享代码。为文件夹中的所有文件调整了它;工作正常。
  • 嗨,阿里,如果我能提供帮助,我将非常感谢您对答案的支持,谢谢。 :)
  • 一旦我获得 >15 点声望点,我肯定会的。不会忘记。再次感谢。
【解决方案2】:
    filenames = glob.glob(r'D:/CSV_FOLDER' + "/*.csv")

    new_df = pd.DataFrame()

    for filename in filenames:
        df = pd.read_csv(filename)
        second_column = df.iloc[:, 1]
        new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
        del(df)

    new_df.to_csv('new_csv.csv', index=False)

【讨论】:

  • 所以我在一个文件夹中为多个文件尝试了这段代码,它工作得非常好。
【解决方案3】:

这可以通过 glob 和 pandas 完成:

import glob
import pandas as pd

mylist = [f for f in glob.glob("*.csv")]
df = pd.read_csv(mylist[0]) #create the dataframe from the first csv
df = pd.DataFrame(df.iloc[:,1]) #only keep 2nd column
for x in mylist[1:]: #loop through the rest of the csv files doing the same
    t = pd.read_csv(x)
    colName = pd.DataFrame(t.iloc[:,1]).columns
    df[colName] = pd.DataFrame(t.iloc[:,1])
    df.to_csv('output.csv', index=False)

【讨论】:

  • 感谢分享代码。 csvList 和 mylist 之间不匹配。但是,它只针对第一个文件运行。
  • 如果此解决方案对您的问题有帮助,请标记为正确
【解决方案4】:
    import glob
    import pandas as pd

    mylist = [f for f in glob.glob("*.csv")]
    df = pd.read_csv(csvList[0]) #create the dataframe from the first csv
    df = pd.DataFrame(df.iloc[:,0]) #only keep 2nd column
    for x in mylist[1:]: #loop through the rest of the csv files doing the same
        t = pd.read_csv(x)
        colName = pd.DataFrame(t.iloc[:,0]).columns
        df[colName] = pd.DataFrame(t.iloc[:,0])
        df.to_csv('output.csv', index=False)

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多