Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 垂直连接数据帧_Python_Pandas_Dataframe_Csv - Fatal编程技术网

Python 垂直连接数据帧

Python 垂直连接数据帧,python,pandas,dataframe,csv,Python,Pandas,Dataframe,Csv,我想垂直连接数据帧。我拥有的每个数据帧都是从目录中的一个文件创建的,我想连接所有这些数据帧。 我可以为每个单独的文件执行此操作: 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

我想垂直连接数据帧。我拥有的每个数据帧都是从目录中的一个文件创建的,我想连接所有这些数据帧。 我可以为每个单独的文件执行此操作:

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

还有另一个文件,在此基础上还有另一个连接(与第一个文件的代码相同):

为了垂直连接这两个,您应该执行以下操作:

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循环中轻松使用它:

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)

如果您提供一些数据和预期输出的示例,人们可以更好地帮助您!最后一个结果是,您是否希望只包含两列
'name'
'reads'
,其中包含所有文件中的所有值?您好@HooriM。我刚刚要回答第一个问题,但这正是我希望实现的目标。一件事是,这些列中的每一列都有不同的值(尽管每个文件都有相同的列标题),每个文件的值数量也不同。我想知道这是否也是我无法使这些列正确连接的原因。请让我知道,如果我可以提供更多的信息,我感谢你的帮助!这是完美的,它工作在我的测试文件!!非常感谢你!
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)