Python 如何为pandas groupby分配顺序标签?

Python 如何为pandas groupby分配顺序标签?,python,pandas,Python,Pandas,我从下面的pandas dataframe开始,我希望每天分组,并创建一个名为“label”的新列,该列用序列号标记组。我该怎么做 df = pd.DataFrame({'val': [10,40,30,10,11,13]}, index=pd.date_range('2016-01-01 00:00:00', periods=6, freq='12H' ) ) # df['label'] = df.groupby(pd.TimeGrouper('D')) # what do i do here

我从下面的pandas dataframe开始,我希望每天分组,并创建一个名为“label”的新列,该列用序列号标记组。我该怎么做

df = pd.DataFrame({'val': [10,40,30,10,11,13]}, index=pd.date_range('2016-01-01 00:00:00', periods=6, freq='12H' ) )
# df['label'] = df.groupby(pd.TimeGrouper('D')) # what do i do here???
print df
输出:

                     val
2016-01-01 00:00:00   10
2016-01-01 12:00:00   40
2016-01-02 00:00:00   30
2016-01-02 12:00:00   10
2016-01-03 00:00:00   11
2016-01-03 12:00:00   13
期望输出:

                    val label
2016-01-01 00:00:00   10  1
2016-01-01 12:00:00   40  1
2016-01-02 00:00:00   30  2
2016-01-02 12:00:00   10  2
2016-01-03 00:00:00   11  3
2016-01-03 12:00:00   13  3
试试这个:

df = pd.DataFrame({'val': [10,40,30,10,11,13]}, index=pd.date_range('2016-01-01 00:00:00', periods=6, freq='12H' ) )
如果您只想按日期分组:

df['label'] = df.groupby(df.index.date).grouper.group_info[0] + 1
print(df)
要更一般地按时间分组,可以使用TimeGrouper:

df['label'] = df.groupby(pd.TimeGrouper('D')).grouper.group_info[0] + 1
print(df)
以上两项都应为您提供以下信息:

                      val  label
2016-01-01 00:00:00   10      1
2016-01-01 12:00:00   40      1
2016-01-02 00:00:00   30      2
2016-01-02 12:00:00   10      2
2016-01-03 00:00:00   11      3
2016-01-03 12:00:00   13      3
我认为这是没有记录的(或者至少很难找到)。退房:


更多讨论。

也许更简单直观的方法是:

df['label'] = df.groupby(df.index.day).keys

仅供参考,我之所以需要它是因为
sklearn.cross\u validation.LabelKFold
这是否适用于
pd.TimeGrouper()
tho?我确实需要更通用的版本,以防我想一次分组2或5天