【问题标题】:Pandas Read Multiple CSVs & Use Filename in Rows with Single Data ColumnPandas 读取多个 CSV 并在具有单个数据列的行中使用文件名
【发布时间】:2021-11-23 07:52:29
【问题描述】:

我需要将多个 csv 文件读取到 pandas df 中,并将唯一的文件名与日期列和数据列一起保留为一列行。我的文件如下所示:

filename: 34.UNITED STATES.COPPER CROSSING.RADIATION.csv
    YYMMDD      HHMM    CC1.SR.AvMetRefSolar
    20180101    100     5.8
    20180101    200     0
    20180101    300     0
    20180101    400     0
    20180101    500     0

filename: 35.UNITED STATES.GALA.RADIATION.csv    
    YYMMDD      HHMM    GA1.SR.AvMetRefSolar
    20180101    100     8
    20180101    200     0.3
    20180101    300     0.7
    20180101    400     1
    20180101    500     1.3

我用它来定义路径+文件名:

pathd = r'C:\\Users\\U321103\\'

all_files = glob.glob(pathd + "/*UNITED STATES.*RADIATION.csv")

我需要这样的结果:

plant_name     data YYMMDD     HHMM
COPPER CROSSING 5.8 20180101    100
COPPER CROSSING 0   20180101    200
COPPER CROSSING 0   20180101    300
COPPER CROSSING 0   20180101    400
COPPER CROSSING 0   20180101    500
GALA            8   20180101    100
GALA            0.3 20180101    200
GALA            0.7 20180101    300
GALA            1   20180101    400
GALA            1.3 20180101    500

我已经尝试了几件事,使用 pd.concat 和 pd_read_csv 但无法通过每次文件名更改将数据按顺序连接到行中。非常感谢您的指导!

【问题讨论】:

标签: pandas csv concatenation


【解决方案1】:

当我在本地机器上创建两个 csv 文件时,这有效。根据您的文件名/文件路径 (f),您可能需要使用 split 函数来获取文件名的正确部分。假设所有文件名和内容也相同。

df_list = []
for f in all_files:
    # print(f.split('.')[2])
    df = pd.read_csv(f, sep=' \s+', engine='python')
    df['plant_name'] = f.split('.')[2]
    df.rename(columns={df.columns[2]:'data'}, inplace=True)
    df_list.append(df)

df_final = pd.concat(df_list)
df_final

     YYMMDD  HHMM  data       plant_name
0  20180101   100   5.8  COPPER CROSSING
1  20180101   200   0.0  COPPER CROSSING
2  20180101   300   0.0  COPPER CROSSING
3  20180101   400   0.0  COPPER CROSSING
0  20180101   100   8.0             GALA
1  20180101   200   0.3             GALA
2  20180101   300   0.7             GALA
3  20180101   400   1.0             GALA
4  20180101   500   1.3             GALA

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 2017-08-03
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多