将来自多个pandas数据框的所有列连接到一个包含数据和列名称的数据框

时间:2019-06-21 18:40:02

标签: python pandas performance numpy dataframe

我有N个具有不同列数的数据框,我想获得一个包含2列x和Y的数据框,其中x是输入数据框的列中的数据,Y是列名本身。我有很多这样的数据帧需要连接(N大约为10 ^ 2),因此效率是优先考虑的。也欢迎采用麻木的方式而不是熊猫的方式。

例如,

df1:
   one two
0    1   a
1    2   b
2    3   c
3    4   d
4    5   e

df2: 
  three four
0   NaN     
1  None    f
2          g
3     6    7

Final Output Dataframe:
    x      y
0   1    one
1   2    one
2   3    one
3   4    one
4   5    one
5   a    two
6   b    two
7   c    two
8   d    two
9   e    two
10  6  three
11  f   four
12  g   four
13  7   four

注意:我忽略了最终数据框中的空字符串,NaN和None。

1 个答案:

答案 0 :(得分:0)

IIUC,您可以在确认之前使用melt()

final=(pd.concat([df1.melt(),df2.dropna().melt()]).
         rename(columns={'variable':'y','value':'x'}). reindex(['x','y'],axis=1))
print(final)