根据最大列值筛选数据帧行

2024-10-01 15:31:39 发布

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


我有这个df数据帧:

        artist               track  class1  class2      class3
0   Portishead               Roads   0.98    0.02          0.0
1  Yo La Tengo     Our Way to Fall   0.14    0.86          0.0
2    Radiohead  Fake Plastic Trees   0.03    0.97          0.0

考虑到这些用户输入:

^{pr2}$

我使用以下代码根据class2 max value对dataframe进行重新排序:

 for col in df.ix[:,'class1':'class3']:
     if col == input_class:
        reordered_df = df.iloc[(df[input_class] - input_value).argsort()]

是这样的:

1  Yo La Tengo     Our Way to Fall   0.14    0.86          0.0
2    Radiohead  Fake Plastic Trees   0.03    0.97          0.0
0   Portishead               Roads   0.98    0.02          0.0

但是,我仍然需要满足一个类条件,即class2值必须是每一行中最大的float值。换句话说:

0   Portishead               Roads   0.98    0.02          0.0

应该讨论,因为max value属于另一个类。在

如何在上面的代码段中插入此条件?在


Tags: todfinputvalueourlawayyo
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:39

沿列逐行查找max,与class2进行比较,并相应地丢弃。在

reordered_df
        artist               track  class1  class2  class3
1  Yo La Tengo     Our Way to Fall    0.14    0.86     0.0
2    Radiohead  Fake Plastic Trees    0.03    0.97     0.0
0   Portishead               Roads    0.98    0.02     0.0

reordered_df[reordered_df.max(1) == reordered_df.class2]
        artist               track  class1  class2  class3
1  Yo La Tengo     Our Way to Fall    0.14    0.86     0.0
2    Radiohead  Fake Plastic Trees    0.03    0.97     0.0

相关问题 更多 >

    热门问题