我在Pandas ffill resampled data grouped by column询问(并回答)了一个问题,我想知道如何为列的每个唯一条目(我的资产列)填写日期范围。
我的解决方案要求资产“id”是一列。但是,作为多索引,数据对我来说更有意义。此外,我想在multiindex中有更多字段。在填充之前填充前进的唯一方法是从多重索引中删除非日期字段吗?
我的示例的修改版本(用于处理带有多索引的df):
from datetime import datetime, timedelta
import pytz
some_time = datetime(2018,4,2,20,20,42)
start_date = datetime(some_time.year,some_time.month,some_time.day).astimezone(pytz.timezone('Europe/London'))
end_date = start_date + timedelta(days=1)
start_date = start_date + timedelta(hours=some_time.hour,minutes=(0 if some_time.minute < 30 else 30 ))
df = pd.DataFrame(['A','B'],columns=['asset_id'])
df2=df.copy()
df['datetime'] = start_date
df2['datetime'] = end_date
df['some_property']=0
df.loc[df['asset_id']=='B','some_property']=2
df = df.append(df2).set_index(['asset_id','datetime'])
这可以说是我疯狂的解决方案:
df = df.reset_index()
df = df.set_index('datetime').groupby('asset_id').resample('30T').ffill().drop('asset_id',axis=1)
df = df.reset_index().set_index(['asset_id','datetime'])
我可以避免所有重新编制索引吗?