我有一个很大的数据框,里面有一个日期字段。我想通过 MM/YYYY 从数据帧创建子数据帧。我可以通过指定日期范围来做到这一点,但我想让它动态化,其中整个数据框基于日期列中的月份年份进行分区。
来自:
sales date
0 420 01/10/2021
1 380 01/15/2021
3 420 01/20/2021
4 380 02/02/2021
5 420 03/10/2021
6 380 03/13/2021
致:
sales date
0 420 01/10/2021
1 380 01/15/2021
3 420 01/20/2021
sales date
0 380 02/02/2021
sales date
0 420 03/10/2021
1 380 03/13/2021
答案 0 :(得分:1)
做groupby
然后保存到dict
d = {x : y for x , y in df.groupby(pd.to_datetime(df.date).dt.strftime('%y-%m'))}
d
Out[8]:
{'21-01': sales date
0 420 01/10/2021
1 380 01/15/2021
3 420 01/20/2021, '21-02': sales date
4 380 02/02/2021, '21-03': sales date
5 420 03/10/2021
6 380 03/13/2021}
答案 1 :(得分:1)
试试:
df["date"] = pd.to_datetime(df["date"])
for _, g in df.groupby([df.date.dt.year, df.date.dt.month]):
print(g)
print()
打印:
sales date
0 420 2021-01-10
1 380 2021-01-15
3 420 2021-01-20
sales date
4 380 2021-02-02
sales date
5 420 2021-03-10
6 380 2021-03-13
答案 2 :(得分:0)
df['date'] = pd.to_datetime(df['date'], format='%d/%m/%Y')
df['month/year'] = str(df['date'].dt.month) + "/" + (df['date'].dt.year)
for month_year, df_month_year in df.groupby('month/year'):
print(df_month_year)