在 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
我有以下数据框:
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