如何在数据框中过滤日期

时间:2020-06-15 12:13:12

标签: pandas date filter

**大家好,我有一个预测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']

非常感谢:) **

1 个答案:

答案 0 :(得分:0)

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()


相关问题