python - 从数据框中获取最新响应
问题描述
我有一个需要循环的数据集,它返回一个数据框,其中只有每个受访者的最新回复,但我无法解决它,你能帮我吗?数据集是这样的:
respondent date answer
1 22/08/2021 1
1 23/08/2021 3
1 25/08/2021 1
2 22/08/2021 2
2 22/08/2021 3
2 23/08/2021 1
3 22/08/2021 2
3 24/08/2021 3
4 22/08/2021 2
4 25/08/2021 3
解决方案
假设我们有以下数据框:
import pandas as pd
df = pd.DataFrame(
{
"respondent": [1, 1, 1, 2, 2, 3, 4, 4],
"date": pd.date_range(start="1/1/2018", end="1/08/2018"),
"answer": [2, 3, 1, 1, 2, 2, 3, 1],
}
)
看起来像:
respondent date answer
0 1 2018-01-01 2
1 1 2018-01-02 3
2 1 2018-01-03 1
3 2 2018-01-04 1
4 2 2018-01-05 2
5 3 2018-01-06 2
6 4 2018-01-07 3
7 4 2018-01-08 1
你需要的是:
- 受访者分组
- 获取他最近的日期(最大日期)
- 找到具有上一步日期的原始数据框的行
这可以通过以下方式完成:
df_new = df[df.groupby('respondent').date.transform('max') == df['date']]
并将导致:
respondent date answer
2 1 2018-01-03 1
4 2 2018-01-05 2
5 3 2018-01-06 2
7 4 2018-01-08 1
推荐阅读
- botframework - 在 Bot FrameWork v4 中管理生产中的状态
- python-3.x - 在 Python 中进行异步调用
- python - 将 Grafana 数据导出到 Excel
- c - 无声符号碰撞?
- javascript - 加载所有元素后的新按钮
- c++ - 在 C++ 中将值从 X 更改为 X 会导致数据竞争吗?
- html - 在 % 宽度期间溢出滚动未按预期工作
- go - tikv api 中的锁键有什么用途?
- python - 与图像字幕模型中的图层不兼容
- flutter - Flutter 错误:在构建期间调用了 setState() 或 markNeedsBuild()