在 Pandas DataFrame 中插入行以填补年份列中的空白

Insert rows to fill gaps in year column in Pandas DataFrame

我有以下数据框:

import pandas as pd

data = {'id': ['A', 'A','B','C'],
        'location':['loc1', 'loc2','loc1','loc3'],
        'year_data': [2013,2015,2014,2015],
        'c': [10.5, 13.5,12.3,9.75]}

data = pd.DataFrame(data)

对于每个 groupby(['id','location']),我想在 DataFrame 中插入从 min(year) 到 2015 年的行。

期望的输出:

data = {'id': ['A', 'A', 'A','A','B','B','C'],
        'location':['loc1', 'loc1', 'loc1', 'loc2','loc1','loc1','loc3'],
        'year_data': [2013,2014,2015,2015,2014,2015,2015],
        'c': [10.5,10.5,10.5, 13.5,12.3,12.3,9.75]}

data = pd.DataFrame(data)

使用 lambda 函数从 DataFrame.set_index in range for Series.reindex 创建的索引中获取最小值 year,每组 method='ffill'

f = lambda x: x.reindex(range(x.index.min(), 2016), method='ffill')
df = data.set_index("year_data").groupby(['id','location'])['c'].apply(f).reset_index()
print (df)
  id location  year_data      c
0  A     loc1       2013  10.50
1  A     loc1       2014  10.50
2  A     loc1       2015  10.50
3  A     loc2       2015  13.50
4  B     loc1       2014  12.30
5  B     loc1       2015  12.30
6  C     loc3       2015   9.75