pandas - 合并/合并具有不同索引和不同列名的数据帧

标签 pandas dataframe

我在以所需的方式合并两个数据帧时遇到问题。我用 merge 尝试了很多次都没有成功和 join方法,但我没有达到预期的结果。

import pandas as pd

d = {'A': [1, 1, 0, 1, 0, 1, 0],
     'B': [0, 0, 0, 0, 0, 1, 1]
     }
df = pd.DataFrame(data=d, index=["A", "B", "C", "D", "E", "F", "G"])
print(df)

d = {'A2': ["D", "A", "A", "B", "C", "C", "E", "X", "F", "G"],
     'B2': ["DD", "AA", "AA", "BB", "CC", "CC", "EE", "XX", "FF", "GG"],
     'C3': [1, 1, 11, 35, 53, 2, 76, 45, 5, 34]}


df2 = pd.DataFrame(data=d)
print(df2)

控制台输出:
   A  B
A  1  0
B  1  0
C  0  0
D  1  0
E  0  0
F  1  1
G  0  1

  A2  B2  C3
0  A  AA   1
1  A  AA  11
2  B  BB  35
3  C  CC  53
4  C  CC   2
5  E  EE  76
6  X  XX  45
7  F  FF   5
8  G  GG  34

我正在寻找一种计算以下内容的方法:通过 df 的索引我可以在专栏A2中查找的 df2 B2的值应该添加到 df .

想要的结果:
   A  B  B2
A  1  0  AA
B  1  0  BB
C  0  0  CC
D  1  0  DD
E  0  0  EE
F  1  1  FF
G  0  1  GG

(这只是虚拟数据,仅仅复制索引并写入B2df列是不够的)

最佳答案

set_index并分配它

df['B2']=df2.drop_duplicates('A2').set_index('A2')['B2']
df
Out[728]: 
   A  B  B2
A  1  0  AA
B  1  0  BB
C  0  0  CC
D  1  0  DD
E  0  0  EE
F  1  1  FF
G  0  1  GG

关于pandas - 合并/合并具有不同索引和不同列名的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260920/

相关文章:

python - 按 pandas 中除一个索引列以外的所有内容分组

python - Scikit : Problem returning Dataframe from imputer instead of Numpy Array

python - Pandas 嵌套的 groupby 给出了意想不到的结果

python-3.x - 不明确的时间错误 Pandas

按滚动标准差分组的 Pandas

python - 如何更改 .describe() 输出的格式?

python - 如何进行groupKfold验证并获得平衡的数据?

python - 为列赋值时矛盾的 pandas.DataFrame 行为

Python - 如何编写一个循环以根据另一个列表的元素python为列表中的每个df添加一列

apache-spark - Pyspark 按顺序将多个 csv 文件读取到数据框中