Вот один из способов использования unnest
x=df.set_index(['Name','State']).groupby(level=0,axis=1).agg(lambda x : x.tolist())
df=unnesting(x, x.columns.tolist(), axis=1)
df
Out[281]:
Runway data1 data2 data3
Name State
Abu Dabi UAE 1 9292 2229 8282
UAE 2 9929 9922 2828
def unnesting(df, explode, axis):
if axis==1:
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx
return df1.join(df.drop(explode, 1), how='left')
else :
df1 = pd.concat([
pd.DataFrame(df[x].tolist(), index=df.index).add_prefix(x) for x in explode], axis=1)
return df1.join(df.drop(explode, 1), how='left')