【问题标题】: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

【问题讨论】:

  • 将您的代码发布在您迄今为止尝试过的内容上。这可以提高问题质量,激励其他人更快地帮助您,并防止在不利于您的方向上重新发明轮子。审查结束。

标签: python pandas dataframe loops


【解决方案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

你需要做的是:

  1. 受访者分组
  2. 获取他最近的日期(最大日期)
  3. 找到原始数据框的行与上一步的日期

这可以通过以下方式完成:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2023-03-16
    • 2015-07-02
    • 2020-03-22
    相关资源
    最近更新 更多