python - Groupby 用最大值 pandas 替换值
问题描述
我有这个数据框
lst = [['AAA',15],['BBB',16],['BBB',22],['AAA',20],['CCC',11],['AAA',10]]
df = pd.DataFrame(lst,columns = ['name','val'])
看起来像这样
name val
0 AAA 15
1 BBB 16
2 BBB 22
3 AAA 20
4 CCC 11
5 AAA 10
我要这个
name val
0 AAA 20
1 BBB 22
2 BBB 22
3 AAA 20
4 CCC 11
5 AAA 20
全部替换为该组val
的最大值name
到目前为止我做到了
dd = df.groupby('name')['val'].max().to_dict()
这会给我所有最大的字典,val
现在我必须使用这本字典替换它们。
如果我在这之后这样做将替换所有的name
,val
但我想val
根据那里替换所有的name
df.replace({"name": dd})
解决方案
lst = [['AAA',15],['BBB',16],['BBB',22],['AAA',20],['CCC',11],['AAA',10]]
df = pd.DataFrame(lst,columns = ['name','val'])
max = df.groupby('name').max()
df=df.merge(max,on='name')
del df['val_x']
print(df)
name val_y
0 AAA 20
1 AAA 20
2 AAA 20
3 BBB 22
4 BBB 22
5 CCC 11
推荐阅读
- c# - 无法更改 Windows 窗体中的窗体属性
- iso8583 - ISO 8583 授权消息说明
- sql - SQL MIN(COUNT) 似乎无法正常工作?
- hibernate - 在 SAP Hana 中插入时获取自动增量 ID
- emacs - Dired 忽略目录本地模式值
- shell - Jenkins 管道、外壳和管道
- ruby-on-rails - 如何使用带有 Mongoid 而不是 PostgreSQL 或 SQLite 的 Rails?
- python - libvirt-python CentOS 的构建轮子失败
- laravel - 如何初始化 git repo,因为我在推送 laravel 应用程序时出错
- java - 如何在 LibGDX 中使用鼠标输入旋转对象?