Pandas数据帧重新取样而没有聚合

时间:2016-02-18 22:36:54

标签: python date datetime pandas

我的数据框定义如下:

import datetime
import pandas as pd
import random
import numpy as np

todays_date = datetime.datetime.today().date()
index = pd.date_range(todays_date - datetime.timedelta(10), periods=10, freq='D')
index = index.append(index)
idname = ['A']*10 + ['B']*10
values = random.sample(xrange(100), 20)
data = np.vstack((idname, values)).T

tmp_df = pd.DataFrame(data, columns=['id', 'value'])
tmp_index = pd.DataFrame(index, columns=['date'])
tmp_df = pd.concat([tmp_index, tmp_df], axis=1)
tmp_df = tmp_df.set_index('date')

请注意,每个日期有2个值。我想每周重新采样数据帧tmp_df,但保留两个单独的值。我试过tmp_df.resample('W-FRI'),但它似乎无法正常工作。

1 个答案:

答案 0 :(得分:2)

您正在寻找的解决方案是groupby,它可让您独立执行数据帧切片(此处为&#39; A&#39; B&#39;)的操作:< / p>

df.groupby('id').resample('W-FRI')

注意:您的代码会产生错误(No numeric types to aggregate),因为'value'列未转换为int。您需要先转换它:

df['value'] = pd.to_numeric(df['value'])