我想设置值col2
of DF1
使用匹配索引处保存的值col2
in DF2
:
DF1
:
col1 col2
index
0 a
1 b
2 c
3 d
4 e
5 f
DF2
:
col1 col2
index
2 a x
3 d y
5 f z
DF3
:
col1 col2
index
0 a NaN
1 b NaN
2 c x
3 d y
4 e NaN
5 f z
如果我只是尝试设置DF1['col2'] = DF2['col2']
then col2
出来的一切NaN
值在DF3
- 我认为这是因为指数不同。但是当我尝试使用map()
做类似的事情:
DF1.index.to_series().map(DF2['col2'])
然后我还是得到同样的结果NaN
列,但我认为它会将值映射到索引匹配的位置......
我没有得到什么?
你需要join or assign:
df = df1.join(df2['col2'])
print (df)
col1 col2
index
0 a NaN
1 b NaN
2 c x
3 d y
4 e NaN
5 f z
Or:
df1 = df1.assign(col2=df2['col2'])
#same like
#df1['col2'] = df2['col2']
print (df1)
col1 col2
index
0 a NaN
1 b NaN
2 c x
3 d y
4 e NaN
5 f z
如果没有匹配并且所有值都是NaN
检查索引是否具有相同的数据类型df
:
print (df1.index.dtype)
print (df2.index.dtype)
如果没有,则使用 astype:
df1.index = df1.index.astype(int)
df2.index = df2.index.astype(int)
错误的解决方案(检查索引 2):
df = df2.combine_first(df1)
print (df)
col1 col2
index
0 a NaN
1 b NaN
2 a x
3 d y
4 e NaN
5 f z
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)