假設我有一個熊貓數(shù)據(jù)框,如下所示:>>> df=pd.DataFrame({'dt':pd.to_datetime(['2018-12-10 16:35:34.246','2018-12-10 16:36:34.243','2018-12-10 16:38:34.216','2018-12-10 16:42:34.123']),'value':[1,2,3,4]})>>> df dt value0 2018-12-10 16:35:34.246 11 2018-12-10 16:36:34.243 22 2018-12-10 16:38:34.216 33 2018-12-10 16:42:34.123 4>>> 我想按'dt'列對這個數(shù)據(jù)框進行分組,但我想以一種方式對它進行分組,它認為小于一秒不同的值是相同的,在對那些分組后,我想'value'根據(jù)每個組總結該列,并且我希望數(shù)據(jù)幀兩個保持相同的長度,因此小于一秒的差異值將都是重復值,到目前為止我嘗試過:>>> df.groupby('dt',as_index=False)['value'].sum() dt value0 2018-12-10 16:35:34.246 11 2018-12-10 16:36:34.243 22 2018-12-10 16:38:34.216 33 2018-12-10 16:42:34.123 4>>> 但是如您所見,數(shù)據(jù)框沒有更改,因為它按等效'dt'列值進行分組。我想要的輸出是: dt value0 2018-12-10 16:35:34.246 31 2018-12-10 16:36:34.243 32 2018-12-10 16:38:34.216 33 2018-12-10 16:42:34.123 4
2 回答

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
蠻力解決方案是取您的datetime系列和每個datetime值之間的絕對差異,然后與閾值進行比較:
# data from @StephenCowley
threshold = pd.Timedelta(seconds=1)
df['val'] = [df.loc[(df['dt'] - t).abs() < threshold, 'value'].sum()
for t in df['dt']]
print(df)
dt value val
0 2018-12-10 16:35:34.246 1 3
1 2018-12-10 16:35:34.243 2 3
2 2018-12-10 16:38:34.216 3 3
3 2018-12-10 16:42:34.123 4 4
添加回答
舉報
0/150
提交
取消