我有以下数据框,现在我想创建一个附加列以包含每列火车的目的地(ziel
)(作为第一级行索引zug_nr
),该列已经在an_bf
列作为每列火车的最后一站(作为第二级行索引bf
)。
但是,使用groupby
并没有帮助
df9['ziel'] = df9['an_bf'].groupby(level = 0, axis = 0).max()
df9.head()
an_zeit an_bf sorte ab_zeit ziel
zug_nr bf
IC 2309 0 1900-01-01 00:11:00 Duisburg Hbf IC 1900-01-01 00:00:00 NaN
1 1900-01-01 00:25:00 Düsseldorf Hbf IC 1900-01-01 00:00:00 NaN
2 1900-01-01 00:49:00 Köln Hbf IC 1900-01-01 00:00:00 NaN
ICE 100 0 1900-01-01 00:13:00 Bochum Hbf ICE 1900-01-01 00:04:00 NaN
1 1900-01-01 00:26:00 Dortmund Hbf ICE 1900-01-01 00:04:00 NaN
这就是我想要的样子:
an_zeit an_bf sorte ab_zeit ziel
zug_nr bf
IC 2309 0 1900-01-01 00:11:00 Duisburg Hbf IC 1900-01-01 00:00:00 Köln Hbf
1 1900-01-01 00:25:00 Düsseldorf Hbf IC 1900-01-01 00:00:00 Köln Hbf
2 1900-01-01 00:49:00 Köln Hbf IC 1900-01-01 00:00:00 Köln Hbf
ICE 100 0 1900-01-01 00:13:00 Bochum Hbf ICE 1900-01-01 00:04:00 Dortmund Hbf
1 1900-01-01 00:26:00 Dortmund Hbf ICE 1900-01-01 00:04:00 Dortmund Hbf
预先感谢您的建议!
答案 0 :(得分:2)
您应该使用transform
df9['ziel'] = df9['an_bf'].groupby(level = 0, axis = 0).transform('max')
答案 1 :(得分:2)
将GroupBy.last
与GroupBy.transform
一起使用:
#if datetimes are not sorted by an_zeit column
#df9 = df9.sort_values('an_zeit', ascending=False)
df9['ziel'] = df9.groupby(level=0)['an_bf'].transform('last')
#sorting MultiIndex if necessary
#df9 = df9.sort_index()