gpt4 book ai didi

python - 使用另一个数据框中匹配索引的值设置数据框列

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:49 25 4
gpt4 key购买 nike

我想在 DF1col2 中设置值,使用 DF2< 中 col2 的匹配索引保存的值:

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'] 那么 col2 会以所有 NaN 的形式出现DF3 中的值 - 我认为这是因为索引不同。然而,当我尝试使用 map() 做类似的事情时:

DF1.index.to_series().map(DF2['col2'])

然后我仍然得到相同的 NaN 列,但我认为它会将值映射到索引匹配的位置...

我没有得到什么?

最佳答案

你需要joinassign :

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

或者:

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

关于python - 使用另一个数据框中匹配索引的值设置数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896105/

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