python - 按 id 汇总多个字符串列 - python
问题描述
我在 Python 中得到了以下数据框:
d = pd.DataFrame({'id': [1, 1, 1, 2, 2, 3],
'col1': ['normal', 'well', 'normal', 'normal', 'well', 'normal'],
'col2': ['bad', 'normal','normal', 'normal', 'normal', 'bad']})
我想按 id 汇总,但如果没有其他内容(“好”或“坏”),则保留“正常”或“正常”以外的列字符串。如下所示:
result = pd.DataFrame({'id': [1, 2, 3],
'col1': ['well', 'well', 'normal'],
'col2': ['bad', 'normal', 'bad']})
我正在考虑排序,然后使用 groupby 和 .first 但不确定如何在每列的顶部获得所需的级别。
解决方案
使用分类定义顺序
cats = ['well', 'bad', 'normal']
d = d.assign(
col1=pd.Categorical(d.col1, cats, ordered=True),
col2=pd.Categorical(d.col2, cats, ordered=True)
)
d.groupby('id', as_index=False).min()
id col1 col2
0 1 well bad
1 2 well normal
2 3 normal bad
推荐阅读
- c# - 我需要在 wpf 程序的主窗口之前添加一个“登录”屏幕
- flutter - Flutter:为什么移动到另一个活动时数据会更新?
- java - 在 Java 中转换 Lambda 表达式
- python - 如何获取使用 Youtube-dl 下载的文件的文件名
- wordpress - 如何调试一个给出超时的wordpress插件
- mysql - 有没有办法在唯一索引找到匹配项后继续搜索
- java - 如何在 Docker 和 PostgreSQL 数据库中同时使用 Java?
- python - python给出的数组是一维的,但是有2个被索引错误
- python - Discord.py 检测嵌入标题或描述中的消息
- qt - 为什么 ScrollView 中的动态对象不会随其他内容滚动?