我的数据框定义如下:
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')
,但它似乎无法正常工作。
答案 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'])