Fra*_*nco 5 python timestamp dataframe pandas pandas-groupby
我有以下带有时间戳索引的数据帧结构:
neg neu norm pol pos date
time
1520353341 0.000 1.000 0.0000 0.000000 0.000
1520353342 0.121 0.879 -0.2960 0.347851 0.000
1520353342 0.217 0.783 -0.6124 0.465833 0.000
Run Code Online (Sandbox Code Playgroud)
我从时间戳创建日期:
data_frame['date'] = [datetime.datetime.fromtimestamp(d) for d in data_frame.time]
Run Code Online (Sandbox Code Playgroud)
结果:
neg neu norm pol pos date
time
1520353341 0.000 1.000 0.0000 0.000000 0.000 2018-03-06 10:22:21
1520353342 0.121 0.879 -0.2960 0.347851 0.000 2018-03-06 10:22:22
1520353342 0.217 0.783 -0.6124 0.465833 0.000 2018-03-06 10:22:22
Run Code Online (Sandbox Code Playgroud)
我想按小时分组,同时获取除timestamp以外的所有值的均值,该值应该是分组开始的小时。所以这是我要存档的结果:
neg neu norm pol pos
time
1520352000 0.027989 0.893233 0.122535 0.221079 0.078779
1520355600 0.028861 0.899321 0.103698 0.209353 0.071811
Run Code Online (Sandbox Code Playgroud)
到目前为止,我得到的最接近答案是:
data = data.groupby(data.date.dt.hour).mean()
Run Code Online (Sandbox Code Playgroud)
结果:
neg neu norm pol pos
date
0 0.027989 0.893233 0.122535 0.221079 0.078779
1 0.028861 0.899321 0.103698 0.209353 0.071811
Run Code Online (Sandbox Code Playgroud)
但我想不出如何保留考虑到grouby开始时间的时间戳。
小智 5
pd.DataFrame.resample在发布全天候解决方案后,我碰到了这个宝石。
# Construct example dataframe
times = pd.date_range('1/1/2018', periods=5, freq='25min')
values = [4,8,3,4,1]
df = pd.DataFrame({'val':values}, index=times)
# Resample by hour and calculate medians
df.resample('H').median()
Run Code Online (Sandbox Code Playgroud)
或者groupby,Grouper如果您不想将时间用作索引,则可以使用with :
df = pd.DataFrame({'val':values, 'times':times})
df.groupby(pd.Grouper(level='times', freq='H')).median()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3800 次 |
| 最近记录: |