熊猫单元格值是另一个数据框中的列名

时间:2020-01-08 11:03:14

标签: python pandas

我有两个巨大的数据框。 为了简单起见,

df1:
Item   Date   Demand   
A       01     Jan
A       02     Jan
A       03     Jan
B       01     Apr
B       02     Apr
B       03     Apr
C       01     Mar
C       02     Mar
C       03     Mar


df2:
Item   Date   Jan   Feb    Mar   Apr   May    Jun
 A     01     343   335    343   231   234    345
 A     02     340   331    344   230   230    343
 A     03     373   334    341   235   264    344
 B     01     345   456    455   453   612    342
 B     02     348   450    453   455   642    345
 B     03     346   459    452   454   632    342
 C     01     456   341    832   342   123    411
 C     02     452   340    836   341   423    413
 C     03     451   348    837   346   153    410

对于df1,我想用demand中的值替换df2列中存在的月份名称。 例如,在第一行中,应将Jan替换为343的{​​{1}}的{​​{1}}列中的值Jan

最终输出应如下所示-

df2

我尝试了不同的方法,但是没有一个起作用。请帮帮我。 谢谢。

2 个答案:

答案 0 :(得分:2)

thushv89的答案很好!但是,在其他情况下,您可能只想rootObjects.SelectMany(x=> x.DomesticFlightInfos).Where(y => !y.IsInbound); df2。

melt

输出:

df2 = df2.melt(id_vars=['Item','Date'],
               value_vars=['Jan','Feb','Mar','Apr','May','Jun'],
               var_name='Month',
               value_name='Demand')

答案 1 :(得分:1)

怎么样?

df2 = df2.set_index(['Item', 'Date'], drop=True)
df["Demand"] = df.apply(lambda x: df2.loc[(x.Item,x.Date), x.Demand], axis=1)
相关问题