我在熊猫有两个桌子。其中一个大约是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)
答案 0 :(得分:0)
您需要选择第一个ratio
值。假设您希望表2中的比率优先:
# join in ratio from the other table
table1 = table1.join(table2.set_index(["date", "state"])["ratio"].to_frame("ratio2"), on=["date", "state"])
# take ratio2 first, then the existing ratio value if ratio2 is null
table1["ratio"] = table1["ratio2"].fillna(table1["ratio"])
# delete the ratio2 column
del table1["ratio2"]
答案 1 :(得分:0)
首先从ModalComponent MC = new ModalComponent()..init(mTitle:'TitleX');
创建一个映射系列:
df2
然后将Feed投放到s = df2.set_index(['date', 'state'])['ratio']
:
df1
df1['ratio'] = df1.set_index(['date', 'state']).index.map(s.get)\
.fillna(df1['ratio'])
中的比率优先。