如何从每个一级索引的最大二级索引单元格中选择值?

2024-09-27 18:08:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的数据帧,我现在想创建一个额外的列来包含每列的目的地(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

提前感谢您的建议


Tags: annannrlngroupbyicicezug
2条回答

你应该使用transform

df9['ziel'] = df9['an_bf'].groupby(level = 0, axis = 0).transform('max')

^{}^{}一起使用:

#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()

相关问题 更多 >

    热门问题