从数据框中获取最新响应
Posted
技术标签:
【中文标题】从数据框中获取最新响应【英文标题】:Get most recent responses from a dataframe 【发布时间】:2021-12-27 23:28:25 【问题描述】:我有一个需要循环的数据集,它返回一个数据框,其中仅包含每个受访者的最新回复,但我无法解决它,您能帮帮我吗?数据集是这样的:
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
【问题讨论】:
将您的代码发布在您迄今为止尝试过的内容上。这可以提高问题质量,激励其他人更快地帮助您,并防止在不利于您的方向上重新发明***。审查结束。 【参考方案1】:假设我们有以下数据框:
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
【讨论】:
以上是关于从数据框中获取最新响应的主要内容,如果未能解决你的问题,请参考以下文章