从数据框中获取最新响应

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

【讨论】:

以上是关于从数据框中获取最新响应的主要内容,如果未能解决你的问题,请参考以下文章

从组合框中获取数据并使用它来获取另一个组合框中的数据

从熊猫数据框中获取最小和最大日期

如何从 QML 旋转框中获取数据

试图从熊猫数据框中获取小计

如何从 imdb 获取更多信息并将其保存在 pandas 数据框中? [复制]

从分组数据框中获取用户输入并绘制图表