我无法以所需的方式合并两个数据框。我用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
的{{1}}列中查找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
的{{1}}列中是不够的)
答案 0 :(得分:3)
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
答案 1 :(得分:1)
我知道W-B已经以非常优雅的方式回答了这一问题。
但是,由于我花了很多时间以一种不太专业的方式来解决此问题,所以让我也发布我的解决方案。
发件人:
我正在寻找一种计算以下内容的方法:通过df的索引I 可以在df2的A2列中查找应添加的B2值 到df。
我知道我应该这样做:
这是我的代码:
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)
llista=[]
for i in df.index:
m=df2['A2'].loc[df2['A2']==i].index
if m[0]:
print m[0],i
llista.append(df2['B2'].iloc[m[0]])
else:
llista.append([])
df['B2'] = llista
输出为:
A B B2
A 1 0 AA
B 1 0 BB
C 0 0 CC
D 1 0 []
E 0 0 EE
F 1 1 FF
G 0 1 GG
您看到的与已接受的帖子不同。这是因为df2 ['A2']中没有'D'索引