[Chartjs]-How to add null value rows into pandas dataframe for missing years in a multi-line chart plot

1👍

Use Series.unstack with DataFrame.stack trick:

df = df.set_index(['country','date']).unstack().stack(dropna=False).reset_index()
print (df)
  country  date  value
0      CA  1999    NaN
1      CA  2000  123.0
2      CA  2001  125.0
3      CA  2002    NaN
4      US  1999  223.0
5      US  2000  235.0
6      US  2001  344.0
7      US  2002  355.0

Another idea with DataFrame.reindex:

mux = pd.MultiIndex.from_product([df['country'].unique(), 
                                  range(df['date'].min(), df['date'].max() + 1)], 
                                 names=['country','date'])
df = df.set_index(['country','date']).reindex(mux).reset_index()
print (df)
  country  date  value
0      CA  1999    NaN
1      CA  2000  123.0
2      CA  2001  125.0
3      CA  2002    NaN
4      US  1999  223.0
5      US  2000  235.0
6      US  2001  344.0
7      US  2002  355.0

Leave a comment