【问题标题】:Order a database with pandas with conditions订购带有条件的熊猫数据库
【发布时间】:2023-02-21 23:46:40
【问题描述】:

我有以下数据库结构:

Column A Vote1 Vote2 Size1 Size2
Item1 2 -1 2.5 2.1
Item2 -3 3 2.2 3.3

我需要通过 Vote * Size 之间的乘积来排序 db,但我需要在 Vote1 和 Vote2 之间选择较大的一个,与 Size1 和 Size2 相同。

更大(投票 1,投票 2)* 更大(尺寸 1,尺寸 2)

我无法理解如何使用熊猫。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    对所有带有Vote的列使用DataFrame.filter,获取Size列的最大值和相同的方法,最后多个系列:

    df['new'] = df.filter(like='Vote').max(axis=1).mul(df.filter(like='Size').max(axis=1))
    

    或者:

    df['new'] = np.maximum(df['Vote1'], df['Vote2']) * np.maximum(df['Size1'], df['Size2'])
    

    【讨论】:

    • 谢谢!很好,所以“喜欢”是选择所有包含您作为参数传递的文本的列,我猜。
    【解决方案2】:

    一种选择是提取数字前的列名并将其用于 groupby.max,然后获取 prod

    df['product'] = (df.groupby(df.columns.str.extract('(D+)d+', expand=False),
                                axis=1)
                       .max().prod(axis=1)
                    )
    

    输出:

      Column A  Vote1  Vote2  Size1  Size2  product
    0    Item1      2     -1    2.5    2.1      5.0
    1    Item2     -3      3    2.2    3.3      9.9
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2018-02-27
      • 2017-10-20
      • 2020-08-31
      • 2022-01-15
      相关资源
      最近更新 更多