【发布时间】:2016-11-30 12:53:18
【问题描述】:
我有一个包含两列的数据集:公司和价值。
它有一个日期时间索引,其中包含重复项(同一天,不同的公司有不同的值)。这些值缺少数据,所以我想用同一家公司的前一个数据点转发填充缺失的数据。
但是,我似乎找不到一个好方法来做到这一点,而不会遇到奇怪的 groupby 错误,这表明我做错了什么。
玩具数据:
a = pd.DataFrame({'a': [1, 2, None], 'b': [12,None,14]})
a.index = pd.DatetimeIndex(['2010', '2011', '2012'])
a = a.unstack()
a = a.reset_index().set_index('level_1')
a.columns = ['company', 'value']
a.sort_index(inplace=True)
尝试的解决方案(无效:ValueError: cannot reindex from a duplicate axis):
a.groupby('company').ffill()
a.groupby('company')['value'].ffill()
a.groupby('company').fillna(method='ffill')
Hacky 解决方案(提供了预期的结果,但显然只是一个丑陋的解决方法):
a['value'] = a.reset_index().groupby(
'company').fillna(method='ffill')['value'].values
这可能有一种简单而优雅的方法,这在 Pandas 中是如何执行的?
【问题讨论】:
标签: python datetime pandas group-by missing-data