Python 连接类似的数据框列,对它们进行排序并填充np.NaN
我试图加入几个数据帧对象,每个列都有类似的字符串值。我希望输出是一个数据帧,字符串值按字母顺序排列,其他列中缺少的值用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':
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