我有多个数据帧存储在数据帧列表中,我需要从每个数据帧中取出某个列,比如
['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
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 |