我有一些这样的数据:
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 |
有什么办法可以对熊猫做到这一点?
答案 0 :(得分:1)
将GroupBy.transform
用于汇总值的新列:
df['max'] = df.groupby('code')['value'].transform('max')
答案 1 :(得分:1)
您也可以尝试此操作。
df["max"] = df.code.apply(lambda i : max(df.loc[df["code"] == i]["value"]))