3 回答
TA贡献1775条经验 获得超8个赞
您可以设置node为索引在两个dataframes,设置为NaN除所有值-1s和使用DataFrame.combine_first,以填补NaNs在df1与值df2与共享索引:
df = df1.set_index('node')
df.where(df.eq(-1)).combine_first(df2.set_index('node')).fillna(df)
st1 st2
node
a 8.0 -1.0
b 4.0 6.0
c 3.0 4.0
TA贡献1795条经验 获得超7个赞
一种方法是对-1出现的位置进行索引,然后继续将所有数据合并到df1from 中df2。然后替换您的-1值(这里我实际上是用-1新值替换非值)。您需要将索引设置为节点才能工作:
df1 = df1.set_index('node')
df2 = df2.set_index('node')
no_repl = df1 == -1
new_df = df2.combine_first(df1)
new_df = df1.where(no_repl, new_df).reset_index()
与@yatu 的帖子的想法相同。只是语法略有不同。
TA贡献1779条经验 获得超6个赞
df3 = df1.set_index('node')
df4 = df2.set_index('node')
keep_loc = (df3 == -1) | ~df3.index.isin(df4.index)[:, np.newaxis]
df3.where(keep_loc, df4)
st1 st2
node
a 8 -1
b 4 6
c 3 4
添加回答
举报