我想垂直连接数据帧。我拥有的每个数据框都是从目录中的文件创建的,我想将它们全部串联起来。我可以为每个文件执行此操作:
df1 = pd.read_csv('C:/Users/Desktop/folder/file1.csv', usecols = 'name')
df2 = pd.read_csv('C:/Users/Desktop/folder/file1.csv', usecols = 'reads')
result = pd.concat([df1, df2], axis=1)
但是,我必须一次为每个单独的文件执行此操作。我试图将值保存在一个空数组中,如下所示:
for file in glob.glob('C:/Users/Desktop/folder/file*.csv'):
df1 = pd.read_csv(file, usecols='name')
df2 = pd.read_csv(file, usecols='reads')
collected_columns.append(df1['name'])
collected_columns.append(df2['reads'])
final_df = pd.concat(df1, df2, join='outer', axis=1, sort=True)
# dataframe to csv
final_df.to_csv('C:/Users/Desktop/folder/TEST.csv')
但这会导致一个数据帧,每个文件的每一列并排。我希望这是有道理的,如果有人可以提供帮助,我将不胜感激!
假设第一次串联的结果如下:
first_concat = pd.concat([df1, df2], axis=1)
name reads
0 Joe 1
1 Jack 2
2 John 3
并且您还有另一个文件,基于该文件您还有另一个串联(与第一个文件相同的代码):
second_concat = pd.concat([df3, df4], axis=1)
name reads
0 Ava 11
1 Adam 22
为了垂直合并这两个,您应该执行以下操作:
all_df = [first_concat, second_concat]
final_df = pd.concat(all_df, ignore_index=True)
name reads
0 Joe 1
1 Jack 2
2 John 3
3 Ava 11
4 Adam 22
然后,您可以for loop
轻松地使用它:
all_df = []
for file in glob.glob('C:/Users/Desktop/folder/file*.csv'):
df1 = pd.read_csv(file, usecols='name')
df2 = pd.read_csv(file, usecols='reads')
df_nr_concat = pd.concat([df1, df2], axis=1)
all_df.append(df_nr_concat)
final_df = pd.concat(all_df, ignore_index=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句