首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas读取多个CSV并在具有单个数据列的行中使用文件名

Pandas读取多个CSV并在具有单个数据列的行中使用文件名
EN

Stack Overflow用户
提问于 2021-10-01 17:12:57
回答 1查看 34关注 0票数 0

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
pathd = r'C:\\Users\\U321103\\'

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

我需要这样的结果:

代码语言:javascript
复制
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的方法,但是不能通过每个文件名的改变来按顺序将数据连接起来。您的指导将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2021-10-01 23:40:19

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69409714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档