【问题标题】:Replacing row data in Dataframe whose oringial values are columns from another dataframe, with the values from this 2nd dataframe用来自第二个数据帧的值替换原始值是来自另一个数据帧的列的数据帧中的行数据
【发布时间】:2021-03-03 09:10:01
【问题描述】:

如果我有 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 与来自 d​​f_1 的categ_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

这看起来很简单,但 2 个数据帧的性质不同..(lambda 函数/expressn?)

如果有人有任何指示..谢谢

【问题讨论】:

  • 我会尝试在两者上都使用 pd.melt,然后在适当的列上使用 pd.merge

标签: python pandas dataframe


【解决方案1】:

笨拙地解决了(repro-typo 的区别):

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多