【问题标题】:Using python, how to read all the CSV files in a folder and write the content of the same to a new single CSV file?使用 python,如何读取文件夹中的所有 CSV 文件并将其内容写入新的单个 CSV 文件?
【发布时间】:2020-08-18 23:04:45
【问题描述】:

我在名为“data”的文件夹中有一组 CSV 文件,这些文件名类似于:AA001.csvAA002.csv; BB001.csv; BB002.csv;等等……

文件AA001.csv中的内容如下所示。此文件夹中其他 CSV 文件的内容将与此类似。

date        level     class
2020-01-01  321       low
2020-01-02  984.2     medium

我在另一个文件夹中有一个名为“ma​​in.csv”的 CSV 文件,其内容是这样的:

code    continent    
AA001   Europe
AA002   Asia
.
.

这里,ma​​in.csv 中的第一列包含我们之前看到的文件夹“data”中的 CSV 文件的名称。现在,我想从文件夹“data”中的 CSV 文件中读取数据,并将每个 CSV 文件的内容写入 ma​​in.csv 中与其文件名相对应的内容。预期输出示例:

code    continent    date        level     class
AA001   Europe       2020-01-01  321       low
AA001   Europe       2020-01-02  984.2     medium
AA002   Asia 
.
.

非常感谢您在这方面的任何帮助。

【问题讨论】:

  • 查看 pandas 库,即函数 read_csv() 和 DataFrame.join()
  • @KarlOlufsen 这里的数据文件不会共享任何公共索引来直接连接/连接。我还想从文件夹“data”中读取文件名,并将其中的内容与具有该文件名的相应列连接到“main.csv”。

标签: python pandas csv


【解决方案1】:

您可以使用pd.concat 加入 csv 文件,然后与您的主 csv 合并。 Sample code here:

import pandas as pd
import os

df = pd.read_csv('main.csv')

print('What df looks like:')
print(df)

dir_name = 'data'

csvs = pd.concat([pd.read_csv(os.path.join(dir_name, fl)).assign(code=os.path.splitext(fl)[0]) for fl in os.listdir(dir_name)])

print('\nWhat csvs look like:')
print(csvs)

df = df.merge(csvs, how='outer')

print('\nWhat merged df looks like:')
print(df)

# export result to csv
df.to_csv('result.csv')

结果:

What df looks like:
    code continent
0  AA001    Europe
1  AA002      Asia

What csvs look like:
         date  level   class   code
0  2020-01-01  321.0     low  AA001
1  2020-01-02  984.2  medium  AA001
0  2020-02-01  456.0    high  AA002
1  2020-02-02  789.0     NaN  AA002

What merged df looks like:
    code continent        date  level   class
0  AA001    Europe  2020-01-01  321.0     low
1  AA001    Europe  2020-01-02  984.2  medium
2  AA002      Asia  2020-02-01  456.0    high
3  AA002      Asia  2020-02-02  789.0     NaN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2019-01-12
    • 2019-10-05
    • 2017-05-17
    相关资源
    最近更新 更多