将Dataframe中原始值是来自另一个数据框的列的行数据替换为第二个数据框的值



如果我有1个数据帧df_1,整数id作为cols,日期作为索引:

12345           6789        2222        4444
01.01.2021   categ_id_1      categ_id_2  categ_id_3  categ_id_4

和第二个数据帧df_2,其中df_1中的categor_ids作为列,日期作为索引:

categ_id_1      categ_id_2  categ_id_3  categ_id_4 etc
01.01.2021   0.0034          0.045       0.08        0.64

我试图获得df_3:

12345       6789   2222  4444
01.01.2021   0.0034      0.045  0.08  0.64

这看起来很简单,但是两个数据框架的不同性质…(lambda函数/expressn ?)

如果有人有任何指针…由于

通过(rep -typo's apart):

df_1.columns.set_names("integ_ids",inplace=True)
df_1.index.set_names("date",inplace=True)
df_2.columns.set_names("categ_ids",inplace=True)
df_2.index.set_names("date",inplace=True)
df_1_unpacked=df_1.unstack().to_frame().rename(columns={0:"categ_ids"})
df_2_unpacked=df_2.unstack().to_frame().rename(columns={0:"df2_vals"})
df_temp_1=df_1_unpacked.join(df_2_unpacked,on=['categ_ids','date'])
df_temp_2=df_temp_1.drop('categ_ids',axis=1)
df_3=df_temp_2.unstack(0).droplevel(0,axis=1)

相关内容