我有一个df,df1,基于绑定,年份和状态,如果年份,qtr,状态绑定和类型匹配,我想用df2的值填充另一个df,df3。我正在考虑使用Pandas和OpenPyXL的组合,但仍在研究这个。
数据
df1
year state bound
2027 CA low_stat
2027 CA low_re
2027 NY med_stat
2027 NY med_re
df2
year qtr state type low_stat low_re med_stat med_re high_stat high_re
2027 2027Q1 NY AA 5 6 0 1 3 4
2027 2027Q1 CA AA 1 4 5 4 1 4
2027 2027Q2 NY AA 3 6 4 16 56 1
2027 2027Q2 CA AA 11 2 3 2 3 2
2027 2027Q1 NY BB 1 2 3 4 3 2
2027 2027Q1 CA BB 9 3 2 2 3 2
2027 2027Q2 NY BB 3 1 4 1 5 6
2027 2027Q2 CA BB 9 5 2 5 3 2
DF3
year state qtr low_stat_AA low_re_AA low_stat_BB low_re_BB med_stat_AA med_re_AA med_stat_BB med_re_BB
2027 CA 2027Q1
2027 CA 2027Q2
2027 NY 2027Q1
2027 NY 2027Q2
期望
year state qtr low_stat_AA low_re_AA low_stat_BB low_re_BB med_stat_AA med_re_AA med_stat_BB med_re_BB
2027 CA 2027Q1 1 4 9 3
2027 CA 2027Q2 11 2 9 5
2027 NY 2027Q1 0 1 3 4
2027 NY 2027Q2 4 16 4 1
做
merged = pd.merge(df2,df3, on = 'year','state','type')
我也许可以使用合并。但是,我仍然在研究,因为这是不具体的。任何建议都表示赞赏。
1条答案
按热度按时间aiqt4smr1#
步骤1
熔化
df2
并与df1
合并df_merge.head(5)
第二步
使用
df_merge
创建pivot_table。bound
列和type
列中的字符串必须用'_'连接,因此让我们使用www.example.com函数创建grouper
str.cat。out
如果你想要和
df3
一样的排序,你可以使用df3.columns
来reindex
它。