首页 > 解决方案 > 熊猫的嵌套循环

问题描述

我有一个数据库,其中包含与每个 ID 对应的多个日期。现在我想遍历每个 ID 并找到 i 和 i+1 日期之间的差异,以根据某些值标记数据。例如:

ID      date

0        12.01.2012

0        14.02.2012

0        15.09.2013

1        13.01.2011

1        15.08.2012

对于 ID 0,我想找到连续日期的差异,并将它们与一个条件进行比较,以基于该条件标记数据库。

标签: pandas

解决方案


您是否正在寻找这样的东西:

res = df['date'].apply(lambda x : df['date']-x)
res.columns = df.id.tolist()
res.index=df.id.tolist()

输入:

        date  id
0 2019-01-01   0
1 2019-01-06   0
2 2019-01-01   0
3 2019-01-04   1

输出将是:

        0      0       0       1
0  0 days 5 days  0 days  3 days
0 -5 days 0 days -5 days -2 days
0  0 days 5 days  0 days  3 days
1 -3 days 2 days -3 days  0 days

对于连续的差异,您可以使用:

df["diff"]=df.groupby("id").diff()

输入:

    date    id
0   1984-10-18  0
1   1980-07-19  0
2   1972-04-16  0
3   1969-04-05  1
4   1967-05-29  1
5   1985-07-13  2

输出:

     date      id   diff
0   1984-10-18  0   NaT
1   1980-07-19  0   -1552 days
2   1972-04-16  0   -3016 days
3   1969-04-05  1   NaT
4   1967-05-29  1   -677 days
5   1985-07-13  2   NaT

推荐阅读