Python:Pandas gropper()函数时间戳选择
以下是示例数据:Python:Pandas gropper()函数时间戳选择,python,pandas,Python,Pandas,以下是示例数据: | group | unix_time | | 1 | 1565938335 | # 6:52:15 AM | 1 | 1565938350 | # 6:52:30 AM | 1 | 1565938390 | # 6:53:10 AM 这是代码 df['datetime'] = pd.to_datetime(df['unix_time'], unit='s') #convert unix time to datet
| group | unix_time |
| 1 | 1565938335 | # 6:52:15 AM
| 1 | 1565938350 | # 6:52:30 AM
| 1 | 1565938390 | # 6:53:10 AM
这是代码
df['datetime'] = pd.to_datetime(df['unix_time'], unit='s') #convert unix time to datetime
for g, t in df.groupby(['group', pd.Grouper(freq='60s', key='datetime')]):
print(g, t)
上述代码将数据分为两组:
第1组:第1行和第2行
第2组:第3行
原因是,在Grouper函数中,freq='60s'将从第6:52:00、6:53:00分钟开始计算,而不是从第6:52:15分钟开始计算。Grouper使用默认时间戳:
timestamp 6:52:00
timpstamp 6:53:00
但是,我想把它们放在同一组中,只要时差在60秒以内,上午6:52:15和上午6:53:10在60秒以内
我读过石斑鱼手册,但似乎没有这样的选择。如何修改代码?我的选择是使用熊猫的时间索引 =^^=
import pandas as pd
df = pd.DataFrame({'group': [1,1,1,1], "time": [1565938335, 1565938350, 1565938394, 1565938395]})
df['datetime'] = pd.to_datetime(df['time'], unit='s')
df.index = df['datetime']
print(df)
for item in df['datetime'].resample('60s', kind='period'):
print(item)
输入数据:
group time datetime
datetime
2019-08-16 06:52:15 1 1565938335 2019-08-16 06:52:15
2019-08-16 06:52:30 1 1565938350 2019-08-16 06:52:30
2019-08-16 06:53:14 1 1565938394 2019-08-16 06:53:14
2019-08-16 06:53:15 1 1565938395 2019-08-16 06:53:15
输出:
(Period('2019-08-16 06:52:15', '60S'), datetime
2019-08-16 06:52:15 2019-08-16 06:52:15
2019-08-16 06:52:30 2019-08-16 06:52:30
2019-08-16 06:53:14 2019-08-16 06:53:14
Name: datetime, dtype: datetime64[ns])
(Period('2019-08-16 06:53:15', '60S'), datetime
2019-08-16 06:53:15 2019-08-16 06:53:15
Name: datetime, dtype: datetime64[ns])
如何确定其余数据的开始时间?@zaraki:例如,假设第4行的时间仍然属于第1组,晚于6:53:15AM,那么它将成为新的开始时间。换句话说,第1-3行是第1.1组,第4行是第1.2组