gpt4 book ai didi

python - 在索引上合并 Panda DataFrame,添加额外的列,并且没有重复的索引

转载 作者:太空狗 更新时间:2023-10-30 02:06:57 25 4
gpt4 key购买 nike

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])

df22 = pd.DataFrame({'A2': ['A4', 'A5', 'A6', 'A7'],
'B2': ['B4', 'B5', 'B6', 'B7'],
'C2': ['C4', 'C5', 'C6', 'C7'],
'D2': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])

frames = [df1, df2, df22]
result = pd.concat(frames,sort=False)
result

enter image description here

如我们所见,索引 4、5、6、7 重复,并添加了 NAN。如何有意义地合并..?

NaN at A2 ,B2 ,C2, D2, at index 0,1,2,3 is acceptable

But Index 4,5,6,7 should not repeat and should not contain NaN

最佳答案

你想要这样的东西吗?您可以垂直 pd.concat,前两个数据帧,join 使用数据帧索引将该数据帧连接到 df22。

 pd.concat([df1,df2]).join(df22)

输出:

    A   B   C   D   A2   B2   C2   D2
0 A0 B0 C0 D0 NaN NaN NaN NaN
1 A1 B1 C1 D1 NaN NaN NaN NaN
2 A2 B2 C2 D2 NaN NaN NaN NaN
3 A3 B3 C3 D3 NaN NaN NaN NaN
4 A4 B4 C4 D4 A4 B4 C4 D4
5 A5 B5 C5 D5 A5 B5 C5 D5
6 A6 B6 C6 D6 A6 B6 C6 D6
7 A7 B7 C7 D7 A7 B7 C7 D7

另一种方法是使用combine_first:

from functools import reduce
reduce(lambda x,y: x.combine_first(y), [df1,df2,df22])

df1.combine_first(df2).combine_first(df22)

输出:

    A   A2   B   B2   C   C2   D   D2
0 A0 NaN B0 NaN C0 NaN D0 NaN
1 A1 NaN B1 NaN C1 NaN D1 NaN
2 A2 NaN B2 NaN C2 NaN D2 NaN
3 A3 NaN B3 NaN C3 NaN D3 NaN
4 A4 A4 B4 B4 C4 C4 D4 D4
5 A5 A5 B5 B5 C5 C5 D5 D5
6 A6 A6 B6 B6 C6 C6 D6 D6
7 A7 A7 B7 B7 C7 C7 D7 D7

关于python - 在索引上合并 Panda DataFrame,添加额外的列,并且没有重复的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842851/

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