我知道这可能很简单,但我无法弄清楚如何去做。
我有一个df,其中包含几个我要替换的列,但是我可以说我有这样的df:
df1:
A B
0 a 22
1 b 44
2 c 100
3 d 6
4 e 12
另一个df
df2:
B
0 11
1 22
2 50
3 3
4 6
我想要的df是
df1:
A B
0 a 11
1 b 22
2 c 50
3 d 3
4 e 6
另外,我不想一个接一个地做,因为我有几个专栏。
答案 0 :(得分:4)
如果df
的长度和索引相同:
df1['B'] = df2.B
如果只需要添加值:
df1['B'] = df2.B.values
如果需要更换更多列:
df1 = pd.DataFrame({'A':[1,2,3],
'B':[3,5,6],
'C':[7,8,9],
'D':[1,3,5]})
print (df1)
A B C D
0 1 3 7 1
1 2 5 8 3
2 3 6 9 5
df2 = pd.DataFrame({'A':[7,8,9],
'B':[1,6,5],
'C':[5,6,6],
'D':[7,3,6]})
print (df2)
A B C D
0 7 1 5 7
1 8 6 6 3
2 9 5 6 6
df1[['B', 'C', 'D']] = df2[['B', 'C', 'D']]
print (df1)
A B C D
0 1 1 5 7
1 2 6 6 3
2 3 5 6 6
答案 1 :(得分:2)
下面的代码很粗糙,可以改进,但请告诉我你是否先做了。 假设您有一个数据帧的长度优于另一个:
def replace(dfa, dfb):
a_ = [match for match in df1.columns.values if match in df2.columns.values]
if len(dfa.columns) > len(dfb.columns):
for value in a_:
dfa[[value]] = dfb[[value]]
else:
for value in a_:
dfb[[value]] = dfb[[value]]
您可以使用df1和df2进行测试