pandas - 熊猫的嵌套循环
问题描述
我有一个数据库,其中包含与每个 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,我想找到连续日期的差异,并将它们与一个条件进行比较,以基于该条件标记数据库。
解决方案
您是否正在寻找这样的东西:
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
推荐阅读
- pandas - Azure Application Insights 自定义用户流
- database - 在更新查询中使用组合框
- magento - Magento 2 自定义下拉属性添加选项未显示
- wso2 - 自从迁移到 WSO2IS 后,Moodle 插件“Respondus”将无法进行身份验证
- python - 让尝试更快地捕捉 Python
- java - SimpleJdbcCall 适用于 windows 但不适用于 linux
- javascript - 在 laravel 中创建一个固定的支持按钮
- java - Keycloak:使查询字符串参数在标记 FreeMarker 模板中可用
- oauth-2.0 - OAuth 2 将服务器-服务器 API 调用的身份验证与授权分开
- python - 熊猫 str.count()