python - 使用 groupby 函数根据唯一条件从不同列中选择不同的值
问题描述
我有一个这样的数据框:
PA date grade_conc grade_rebar grade_mason grade_work grade_timber grade_steel grade_total
0 1 2018-10-13 A NR NR NR A A NR
1 1 2018-10-14 A NR NR NR A Z NR
2 1 2018-10-15 A NR NR NR B U NR
3 2 2018-10-13 B NR NR NR B B NR
4 2 2018-10-14 Z NR NR NR A B NR
5 2 2018-10-15 U NR NR NR B A NR
我希望结果为
PA date grade_conc grade_rebar grade_mason grade_work grade_timber grade_steel grade_total
1 2018-10-15 A NR NR NR B Z NR
2 2018-10-15 Z NR NR NR B A NR
结果应按 PA 列分组,并为所有列选择最新日期值,除非列的值为“U”,在这种情况下,它应该是较早的日期值,只有该列没有“U”
解决方案
replace
'U'NaN
那么你想要groupby
+的逻辑last
:
#df = df.sort_values(['PA', 'date'])
df.replace('U', np.NaN).groupby('PA').last()
date grade_conc grade_rebar grade_mason grade_work grade_timber grade_steel grade_total
PA
1 2018-10-15 A NR NR NR B Z NR
2 2018-10-15 Z NR NR NR B A NR
推荐阅读
- twilio - 如何将 DialogFlow CX 与 Whatsapp 集成
- teamcity - 条件构建触发器
- html - 关闭时自动打开新页面
- rxjs - 在任何页面上仅从服务加载一件事
- javascript - 使用 React 在 JSON-SERVER 中使用自定义资源 ID
- python - Pandas 数据框使用基于上述行的值创建新列
- delphi - 如何将 TGroupBox 的背景颜色限制在框边框的内部区域?
- r - R map函数相关查询
- android - 在 Android 中仅为 AT 渲染组件时,一旦 Talkback 到达它们,焦点指示器就可见?
- docker - 扩展参数 certbot 没有交互式问题;只是扩展它