垂直连接数据帧

sra*_*ara 4 python csv dataframe pandas

我想垂直连接数据帧。我拥有的每个数据帧都是从目录中的文件创建的,我想将它们连接起来。我可以对每个单独的文件执行此操作:

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)
Run Code Online (Sandbox Code Playgroud)

但是,我必须一次对每个单独的文件执行此操作。我尝试将值保存在空数组中,如下所示:


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')
Run Code Online (Sandbox Code Playgroud)

但这仍然会产生一个数据框,其中每个文件的每一列并排。我希望这是有道理的,如果有人能提供帮助,我将不胜感激!

Hoo*_* M. 7

假设第一次串联的结果如下:

first_concat = pd.concat([df1, df2], axis=1)
    name    reads
0   Joe     1
1   Jack    2
2   John    3

Run Code Online (Sandbox Code Playgroud)

并且您有另一个文件,基于该文件您有另一个串联(与第一个文件的代码相同):

second_concat = pd.concat([df3, df4], axis=1)

    name    reads
0   Ava     11
1   Adam    22
Run Code Online (Sandbox Code Playgroud)

为了垂直连接这两个,你应该这样做:

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
Run Code Online (Sandbox Code Playgroud)

然后您可以轻松地在您的应用程序中使用它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)
Run Code Online (Sandbox Code Playgroud)