按月份“拆分”数据框

3

我有一个数据框,其中有5列。其中一列是名为"Day"的列,其中包含每个注册的日期。它包含许多日期,从多年前到今天。

例如(MM / DD / YYYY)格式:

c1 c2 c3 day        c4
a  b  c  01-01-2018 d
e  f  g  01-02-2018 h
... more data from january 2018, then starting another month
i  j  k  02-01-2018 l

我需要做的事情是:将数据按月份进行“拆分”/“选择”,并上传到服务器。我不确定如何实现这一点。我考虑过按月份拆分数据框架,但不知道该如何操作。如果问题不清楚,我可以提供另一个示例。谢谢。

你想仅按月份或按年份和月份拆分它吗? - It_is_Chris
听起来你想要一个 groupby。 - Kyle
仅发送月份给服务器,年份将通过文件夹区分。 - Victor H.
1个回答

15

使用 Groupergroupby

# sample data
df = pd.DataFrame(pd.date_range('2018-01-01', '2018-03-01'), columns=['Date'])
# groupby your key and freq
g = df.groupby(pd.Grouper(key='Date', freq='M'))
# groups to a list of dataframes with list comprehension
dfs = [group for _,group in g]

你可以对每个月的小组列表进行迭代:

dfs[0]

       Date
0 2018-01-01
1 2018-01-02
2 2018-01-03
3 2018-01-04
4 2018-01-05

1
Chris,非常感谢!我一直在寻找这个,它真正解决了我的问题。我只有一个关于代码的问题:'group' 前面的“_,”是什么意思? - Victor H.
这只是我用来摆脱不必要信息的变量,以便您可以获得数据框列表:[Timestamp('2018-01-31 00:00:00', freq='M'). . . 它可以是任何您想要的变量:[group for x,group in g] 如果您想要查看它返回了什么:[x for x,group in g]。它与常规的 for-loop 没有区别:for x,group in g: - It_is_Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接