合并具有相同列名的数据框

问题描述 投票:0回答:1

我有多个数据帧存储在数据帧列表中,我需要从每个数据帧中取出某个列,比如

['d']
并将其放入新定义的数据帧中,但将它们放在彼此旁边,以便计算平均值每行的最后。如何在 python 中做到这一点。

dataFrameList = [df1,df2,df3,df4,..dfn]

所有 dfs 具有相同的列数和名称,例如 a、b、c、d、e、f、g,但行数不同(长度不同)df1 有 115 行,df2 有 220 行,df3 有 90 行,等等。

newDataFrame=pd.DataFrame()
被定义为将每个数据帧中所需的列 d 放在此处。 d1,d2,d3,d4,....dn 但它们必须彼此正确,才能计算每行的平均值。

如何做到这一点?

newDataFrame=(d1  d2  d3  d4  ... dn)
               2   5   7  8   .... 1
               3   4    8 9   .... 2
               .
               .
               .  
               Nan 9  Nan 15 ...9 
python pandas dataframe select
1个回答
0
投票
import pandas as pd
df1 = pd.DataFrame({'a': range(2,4), 'b': range(2,4),   'c': range(2,4),    'b': range(2,4)})
df2 = pd.DataFrame({'a': range(5,10),'b': range(5,10),  'c': range(5,10),   'b': range(5,10)})
df3 = pd.DataFrame({'a': range(7,11),'b': range(7,11),  'c': range(7,11),   'b': range(7,11)})
df4 = pd.DataFrame({'a': range(8,13),'b': range(8,13),  'c': range(8,13),   'b': range(8,13)})

merge_on_col = "b"
use_dfs = [df1, df2, df3, df4]
column_names = [f"{merge_on_col}{i}" for i in range(1,len(use_dfs)+1)]
newDataFrame = pd.concat([d[c] for d,c in zip(use_dfs,[merge_on_col]*len(use_dfs))], axis=1, keys=column_names)

    

输出:

b1 b2 b3 b4
2 5 7 8
3 6 8 9
7 9 10
8 10 11
9 12
© www.soinside.com 2019 - 2024. All rights reserved.