gpt4 book ai didi

python - 连接类似的 pandas DataFrame 列,对它们进行排序并用 np.NaN 填充

转载 作者:行者123 更新时间:2023-12-01 07:20:42 26 4
gpt4 key购买 nike

我正在尝试将多个 DataFrame 对象连接在一起,每个对象具有相似的字符串值。我希望输出是单个 DataFrame,其中字符串值按字母顺序排序,其他列中缺失的值将用 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

     1
0 APA
1 HBO
2 JRC

df2

     2
0 ABC
1 HBO
2 JRC
3 XYZ

df3

     3
0 QRS
1 XYZ

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

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

我尝试使用两个外连接操作,但这只是将NaN放在每列的开头或结尾。如果您有任何建议,请告诉我。谢谢。

最佳答案

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

<小时/>
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

关于python - 连接类似的 pandas DataFrame 列,对它们进行排序并用 np.NaN 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57715904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com