pandas - 如何过滤数据框中的日期
问题描述
**大家好,我有一个预测为 12 个月的数据框,现在我想添加一个新的列来分隔月份
df = df[df['TERMIN'] <= pd.Timestamp(arrow.utcnow().ceil('month').date()) + relativedelta(months=+12)]
这是显示 12 个月预测的过滤器,现在我想将所有月份分开
所以我需要新的专栏
df[0] = Juni
df[1] = July
df[2] = August
.
.
.
你有什么想法吗?
MNR TERMIN MENGE
0 LCA64335B 2020-11-23 9.0
6 LCA64335B 2020-12-07 10.0
7 LCA64335B 2020-12-23 12.0
8 LCA64335B 2021-01-11 2.0
9 LCA64335B 2021-01-25 18.0
10 LCA64335B 2021-02-08 8.0
11 LCA64335B 2021-02-22 18.0
12 LCA64335B 2021-03-08 10.0
13 LCA64335B 2021-03-18 26.0
14 LCA64335B 2021-04-05 18.0
15 LCA64335B 2021-04-19 16.0
16 LCA64335B 2021-05-03 20.0
17 LCA64335B 2021-05-24 14.0
18 LCA64335B 2021-06-07 8.0
19 LCA64335B 2021-06-21 12.0
我尝试过这样的事情
df0 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+0)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+0))) ]
df[0] = df0['MENGE']
非常感谢 :) **
解决方案
IIUC,这就是你要找的东西?
df['TERMIN'] = pd.to_datetime(df['TERMIN'])
df['MONTH'] = df['TERMIN'].dt.strftime('%b')
print(df)
MNR TERMIN MENGE MONTH
0 LCA64335B 2020-11-23 9.0 Nov
1 LCA64335B 2020-12-07 10.0 Dec
2 LCA64335B 2020-12-23 12.0 Dec
3 LCA64335B 2021-01-11 2.0 Jan
4 LCA64335B 2021-01-25 18.0 Jan
5 LCA64335B 2021-02-08 8.0 Feb
6 LCA64335B 2021-02-22 18.0 Feb
7 LCA64335B 2021-03-08 10.0 Mar
8 LCA64335B 2021-03-18 26.0 Mar
9 LCA64335B 2021-04-05 18.0 Apr
10 LCA64335B 2021-04-19 16.0 Apr
11 LCA64335B 2021-05-03 20.0 May
12 LCA64335B 2021-05-24 14.0 May
13 LCA64335B 2021-06-07 8.0 Jun
14 LCA64335B 2021-06-21 12.0 Jun
我想要这个!
MNR MENGE 0 1 2 3 4 5 6 7 8 9 10 11 12
0 LCA64335B 201.0 0.0 0.0 0.0 0.0 0.0 9.0 22.0 20.0 26.0 36.0 34.0 34.0 20.0```
and thats my solution!
df = df[df['TERMIN'] <= pd.Timestamp(arrow.utcnow().ceil('month').date()) + relativedelta(months=+12)]
df0 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+0)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+0)))]
df1 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+1)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+1)))]
df2 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+2)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+2)))]
df3 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+3)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+3)))]
df4 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+4)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+4)))]
df5 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+5)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+5)))]
df6 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+6)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+6)))]
df7 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+7)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+7)))]
df8 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+8)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+8)))]
df9 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+9)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+9)))]
df10 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+10)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+10)))]
df11 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+11)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+11)))]
df12 = df[df['TERMIN'].between(pd.Timestamp(arrow.utcnow().ceil('month').date().replace(day=1) + relativedelta(months=+12)), pd.Timestamp(arrow.utcnow().ceil('month').date() + relativedelta(months=+12)))]
df = df.groupby(['MNR'])['MENGE'].sum().reset_index()
df[0] = df0['MENGE'].sum()
df[1] = df1['MENGE'].sum()
df[2] = df2['MENGE'].sum()
df[3] = df3['MENGE'].sum()
df[4] = df4['MENGE'].sum()
df[5] = df5['MENGE'].sum()
df[6] = df6['MENGE'].sum()
df[7] = df7['MENGE'].sum()
df[8] = df8['MENGE'].sum()
df[9] = df9['MENGE'].sum()
df[10] = df10['MENGE'].sum()
df[11] = df11['MENGE'].sum()
df[12] = df12['MENGE'].sum()
推荐阅读
- java - 传递一个运行多个不同线程的静态变量 - TestNG
- python - .data 在 pytorch 中有什么用
- r - 中断由 R 函数调用的 C 进程
- sql - 无法从 Oracle CBLOB 中提取 XML 值
- javascript - Bootstrap 3.3.7 modal 'shown' 事件间歇性触发
- javascript - 我的javascript数组中的这个“孩子”是什么意思?
- amazon-web-services - 如何使 AWS APIGateway 缓存无效
- flutter - Flutter - 页面之间的持久状态
- python - 使用 python 通过 API 访问 LinkedIn 数据(和一般授权)
- python - 有限差分函数索引误差: