首页 > 解决方案 > Pandas - 根据另一个表中的值设置行值

问题描述

我在熊猫中有两张桌子。一个是大约 10,000 多行,如下所示:

表格1

col_1      date      state  ratio [50 more cols]
   A       10/12      NY     .5
   A       12/05      MA     NaN
   .........

我有另一个大约 10 行的表,如下所示:

表 2

date     state    ratio
12/05    MA       .9
12/03    MA       .8
............

我需要根据表 2 中的日期和状态值设置表 1 中的比率。理想的解决方案是合并日期和状态,但这会创建两列:ratio_x 和 ratio_y

我需要一种方法将表 1 中的比率设置为表 2 中日期和状态都匹配的相应比率。表 1 中的比率可以被覆盖。

如果这可以通过合并正确完成,那么它也可以。

编辑:您可以将表 2 视为映射到特定状态值(因此表 2 中的所有状态在此示例中都是 MA)

标签: pythonpandasdataframe

解决方案


首先创建一个映射系列df2

s = df2.set_index(['date', 'state'])['ratio']

然后喂给df1

df1['ratio'] = df1.set_index(['date', 'state']).index.map(s.get)\
                  .fillna(df1['ratio'])

中的比率优先df2


推荐阅读