【问题标题】:filling a column values with max value in pandas在熊猫中用最大值填充列值
【发布时间】:2018-08-26 16:29:37
【问题描述】:

我有一些这样的数据:

pd.DataFrame({'code': ['a', 'a', 'a', 'b', 'b', 'c'],
                      'value': [1,2,3, 4, 2, 1] })



+-------+------+-------+
| index | code | value |
+-------+------+-------+
| 0     | a    | 1     |
+-------+------+-------+
| 1     | a    | 2     |
+-------+------+-------+
| 2     | a    | 3     |
+-------+------+-------+
| 3     | b    | 4     |
+-------+------+-------+
| 4     | b    | 2     |
+-------+------+-------+
| 5     | c    | 1     |
+-------+------+-------+

我想添加一个包含每个代码最大值的列:

| index | code | value | max |
|-------|------|-------|-----|
| 0     | a    | 1     | 3   |
| 1     | a    | 2     | 3   |
| 2     | a    | 3     | 3   |
| 3     | b    | 4     | 4   |
| 4     | b    | 2     | 4   |
| 5     | c    | 1     | 1   |

有没有办法用熊猫做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    GroupBy.transform 用于聚合值的新列:

    df['max'] = df.groupby('code')['value'].transform('max')
    

    【讨论】:

      【解决方案2】:

      你也可以试试这个。

      df["max"] = df.code.apply(lambda i : max(df.loc[df["code"] == i]["value"]))
      

      【讨论】:

        猜你喜欢
        • 2021-03-18
        • 2021-03-10
        • 1970-01-01
        • 2021-10-04
        • 2019-04-28
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 2020-11-19
        相关资源
        最近更新 更多