4

在 Pandas 中,我有datetime一列(不是索引)中带有 s 的 DataFrame,它跨越数天,并且时间间隔不规则(即非周期性)。我想从每一天返回第一个值。因此,如果我的datetime专栏看起来像:

2013-01-01 01:00
2013-01-01 05:00
2013-01-01 14:00
2013-01-02 01:00
2013-01-02 05:00
2013-01-04 14:00

我正在寻找的命令将返回以下索引的数据框列:

2013-01-01 01:00
2013-01-02 01:00
2013-01-04 14:00
4

1 回答 1

2

使用此设置:

import pandas as pd
data = '''\
2013-01-01 01:00
2013-01-01 05:00
2013-01-01 14:00
2013-01-02 01:00
2013-01-02 05:00
2013-01-04 14:00'''
dates = pd.to_datetime(data.splitlines())
df = pd.DataFrame({'date': dates, 'val': range(len(dates))})

>>> df
                 date  val
0 2013-01-01 01:00:00    0
1 2013-01-01 05:00:00    1
2 2013-01-01 14:00:00    2
3 2013-01-02 01:00:00    3
4 2013-01-02 05:00:00    4
5 2013-01-04 14:00:00    5

groupby您可以使用and生成所需的 DataFrame agg

grouped = df.groupby([d.strftime('%Y%m%d') for d in df['date']])
newdf = grouped.agg('first')
print(newdf)

产量

                        date  val
20130101 2013-01-01 01:00:00    0
20130102 2013-01-02 01:00:00    3
20130104 2013-01-04 14:00:00    5
于 2013-09-07T13:00:34.277 回答