Python 连接类似的数据框列,对它们进行排序并填充np.NaN

Python 连接类似的数据框列,对它们进行排序并填充np.NaN,python,pandas,dataframe,join,Python,Pandas,Dataframe,Join,我试图加入几个数据帧对象,每个列都有类似的字符串值。我希望输出是一个数据帧,字符串值按字母顺序排列,其他列中缺少的值用np.NaN填充 import pandas as pd import numpy as np 数据帧 list1 = [{'1':'APA'}, {'1':'HBO'}, {'1': 'JRC'}] list2 = [{'2':'ABC'}, {'2':'HBO'}, {'2': 'JRC'}, {'2':'XYZ'}] list3 = [{'3':'QRS'}, {'3':

我试图加入几个数据帧对象,每个列都有类似的字符串值。我希望输出是一个数据帧,字符串值按字母顺序排列,其他列中缺少的值用np.NaN填充

import pandas as pd
import numpy as np
数据帧

list1 = [{'1':'APA'}, {'1':'HBO'}, {'1': 'JRC'}]
list2 = [{'2':'ABC'}, {'2':'HBO'}, {'2': 'JRC'}, {'2':'XYZ'}]
list3 = [{'3':'QRS'}, {'3':'XYZ'}]

df1 = pd.DataFrame(list1)
df2 = pd.DataFrame(list2)
df3 = pd.DataFrame(list3)
这些看起来像这样:

df1

df2

df3

我希望最终输出如下所示:

df_连接

     1    2    3
0  NaN  ABC  NaN
1  APA  NaN  NaN
2  HBO  HBO  NaN
3  JRC  JRC  NaN
4  NaN  NaN  QRS
5  NaN  XYZ  XYZ
     1    2    3
0  NaN  ABC  NaN
1  APA  NaN  NaN
2  HBO  HBO  NaN
3  JRC  JRC  NaN
4  NaN  NaN  QRS
5  NaN  XYZ  XYZ
我尝试过使用两个
outer join
操作,但这只是将
NaN
s放在每列的开头或结尾。如果你有什么建议,请告诉我。谢谢。

设置所有索引!!(这可能真的很慢)
np.unique
负责字母排序


     3
0  QRS
1  XYZ
     1    2    3
0  NaN  ABC  NaN
1  APA  NaN  NaN
2  HBO  HBO  NaN
3  JRC  JRC  NaN
4  NaN  NaN  QRS
5  NaN  XYZ  XYZ
def f(df, total):
    return df.set_index(df.iloc[:, 0]).reindex(total)

un = np.unique(np.concatenate((df1.values, df2.values, df3.values)))

pd.concat([*map(f, [df1, df2, df3], (un,)*3)], axis=1).reset_index(drop=1)
     1    2    3
0  NaN  ABC  NaN
1  APA  NaN  NaN
2  HBO  HBO  NaN
3  JRC  JRC  NaN
4  NaN  NaN  QRS
5  NaN  XYZ  XYZ