创建平衡面板数据集
Creating a balanced panel dataset
我有一个数据集
id year sales
1 2000 10
2 2000 10
2 2001 20
2 2002 30
我想创建一个平衡面板,以便获得以下内容:
id year sales
1 2000 10
1 2001 NA
1 2002 NA
2 2000 10
2 2001 20
2 2002 30
我尝试了以下代码:
df_balanced = (df.set_index('year',append=True).reindex(pd.MultiIndex.from_product([df.index.unique(),range(df.year.min(),df.year.max()+1)],names['id','year'])).reset_index(level=1))
但是我没有得到想要的输出。
idx = pd.MultiIndex.from_product(
[df.id.unique(), df.year.unique()], names=["id", "year"]
)
df = df.set_index(["id", "year"]).reindex(idx).reset_index()
print(df)
打印:
id year sales
0 1 2000 10.0
1 1 2001 NaN
2 1 2002 NaN
3 2 2000 10.0
4 2 2001 20.0
5 2 2002 30.0
我有一个数据集
id year sales
1 2000 10
2 2000 10
2 2001 20
2 2002 30
我想创建一个平衡面板,以便获得以下内容:
id year sales
1 2000 10
1 2001 NA
1 2002 NA
2 2000 10
2 2001 20
2 2002 30
我尝试了以下代码:
df_balanced = (df.set_index('year',append=True).reindex(pd.MultiIndex.from_product([df.index.unique(),range(df.year.min(),df.year.max()+1)],names['id','year'])).reset_index(level=1))
但是我没有得到想要的输出。
idx = pd.MultiIndex.from_product(
[df.id.unique(), df.year.unique()], names=["id", "year"]
)
df = df.set_index(["id", "year"]).reindex(idx).reset_index()
print(df)
打印:
id year sales
0 1 2000 10.0
1 1 2001 NaN
2 1 2002 NaN
3 2 2000 10.0
4 2 2001 20.0
5 2 2002 30.0