python-3.x - 下个月记录 Pandas 中的搜索值
问题描述
鉴于我有这样的df:
ID Date Amount
0 a 2014-06-13 12:03:56 13
1 b 2014-06-15 08:11:10 14
2 a 2014-07-02 13:00:01 15
3 b 2014-07-19 16:18:41 22
4 b 2014-08-06 09:39:14 17
5 c 2014-08-22 11:20:56 55
...
129 a 2016-11-06 09:39:14 12
130 c 2016-11-22 11:20:56 35
131 b 2016-11-27 09:39:14 42
132 a 2016-12-11 11:20:56 18
我需要创建一个列 df['Checking'] 以显示该 ID 是否会出现在下个月,我尝试了如下代码:
df['Checking']= df.apply(lambda x: check_nextmonth (x.Date,
x.ID), axis=1)
在哪里
def check_nextmonth(date, id)=
x= id in df['user_id'][df['Date'].dt.to_period('M')== ((date+
relativedelta(months=1))).to_period('M')].values
return x
但是处理单行需要很长时间。我该如何改进此代码或其他方式来实现我想要的?
解决方案
这是一种方法,检查分组id的下个月是否等于当前月份+1,并通过对ID进行排序来分配相同的值。
check = df.groupby('ID').apply(lambda x : x['Date'].dt.month.shift(-1) == x['Date'].dt.month+1).stack().values
df = df.sort_values('ID').assign( checking = check).sort_index()
ID Date Amount checking
0 a 2014-06-13 12:03:56 13 True
1 b 2014-06-15 08:11:10 14 True
2 a 2014-07-02 13:00:01 15 False
3 b 2014-07-19 16:18:41 16 True
4 b 2014-08-06 09:39:14 17 False
5 c 2014-08-22 11:20:56 18 False
推荐阅读
- java - 测试 Spring Boot 应用程序,实体模拟
- php - 双向短信线程
- json - Terraform 0.12 AWS 资源,包含从变量构建的 JSON
- swift - 如何使用swift在悬停时显示滚动条?
- c# - 等待进程在表单加载事件中打开
- c - 在 avr c 中传递值错误地转换为 uint32_t
- python - ARX 型号是 Gekko
- ibm-cloud - IBM Watson Assistant:用于创建上下文实体的注释选项卡缺失
- php - 当我运行项目时,它显示控制器没有在 laravel 中退出,但它在控制器文件夹中我该怎么办?
- reactjs - 反应 SWR 获取未定义