我有两个巨大的数据框。 为了简单起见,
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
我尝试了不同的方法,但是没有一个起作用。请帮帮我。 谢谢。
答案 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)