我需要将多个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的方法,但是不能通过每个文件名的改变来按顺序将数据连接起来。您的指导将不胜感激!
发布于 2021-10-01 23:40:19
当我在本地机器上创建两个csv文件时,这是有效的。根据您的文件名/文件路径(f),您可能需要尝试使用拆分函数来获得文件名的正确部分。假定所有文件名和内容也是相同的。
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 GALAhttps://stackoverflow.com/questions/69409714
复制相似问题