我试图每隔 15天查找数据集中的每个值。数据集具有三列-索引,值和日期。
这是根据某些条件评估此中位数的条件。根据条件,每15天将获得新的价值。 我已经尝试了几种方法(主要是python理解),但我仍然是可以正确解决它的初学者。
value date index
14 13065 1983-07-15 14
15 13065 1983-07-16 15
16 13065 1983-07-17 16
17 13065 1983-07-18 17
18 13065 1983-07-19 18
19 13065 1983-07-20 19
20 13065 1983-07-21 20
21 13065 1983-07-22 21
22 13065 1983-07-23 22
23 ..... ......... ..
medians = [dataset['value'].median() for range(0, len(dataset['index']), 15) in dataset['value']]
我希望将数据框中的中值返回到新变量。
syntaxError: can't assign to function call
答案 0 :(得分:1)
假设您具有以下格式的数据:
test = pd.DataFrame({'date': pd.date_range(start = '2016/02/12', periods = 1000, freq='1D'),
'value': np.random.randint(1,1000,1000)})
test.head()
date value
0 2016-02-12 243
1 2016-02-13 313
2 2016-02-14 457
3 2016-02-15 236
4 2016-02-16 893
如果您想每15天进行一次中值,则使用pd.Grouper和groupby date:
test.groupby(pd.Grouper(freq='15D', key='date')).median().reset_index()
date Value
2016-02-12 457.0
2016-02-27 733.0
2016-03-13 688.0
2016-03-28 504.0
2016-04-12 591.0
请注意,在使用pd.Grouper时,您的日期列应为datetime类型。如果不是,请使用:
test['date'] = pd.to_datetime(test['date'])
答案 1 :(得分:-1)
将DataFrame.resample
与median
一起使用:
#if encessary convert to datetimes
dataset['date'] = pd.to_datetime(dataset['date'])
dataset = dataset.resample('15D', on='date')['value'].median().reset_index()
print (dataset)
date value
0 1983-07-15 13065