How To Rename Columns Dynamically Before Unstack In Pandas?
I have the below dataframe created using groupby and sum :- year_month Country 2008-01 Afghanistan 2 Albania 3 A
Solution 1:
I think need Series.unstack
with DataFrame.add_prefix
:
df = s.unstack().add_prefix('der_value_')
print (df)
Country der_value_Afghanistan der_value_Albania der_value_Argentina
year_month
2008-01 2 3 4
2008-02 3 4 5
For index
to column add DataFrame.rename_axis
with DataFrame.reset_index
:
df = s.unstack().add_prefix('der_value_').rename_axis(None, axis=1).reset_index()
print (df)
year_month der_value_Afghanistan der_value_Albania der_value_Argentina
0 2008-01 2 3 4
1 2008-02 3 4 5
Modify MultiInex
before unstack
is also possible by MultiIndex.from_arrays
:
a=s.index.get_level_values(0)b='der_value_'+s.index.get_level_values(1)s.index=pd.MultiIndex.from_arrays([a,b],names=s.index.names)print(s)year_monthCountry2008-01 der_value_Afghanistan2der_value_Albania3der_value_Argentina42008-02 der_value_Afghanistan3der_value_Albania4der_value_Argentina5Name:a,dtype:int64df=s.unstack()print(df)Countryder_value_Afghanistander_value_Albaniader_value_Argentinayear_month2008-01 2342008-02 345
Solution 2:
Creative use of the MultiIndex internals
idx, cols = s.index.levels
i, j = s.index.labels
v = np.zeros((len(idx), len(cols)), dtype=s.dtype)
v[i, j] = s
pd.DataFrame(
np.column_stack([idx, v]),
columns=np.append('year_month', 'der_value_' + cols)
)
year_month der_value_Afghanistan der_value_Albania der_value_Argentina
02008-0123412008-02345
Post a Comment for "How To Rename Columns Dynamically Before Unstack In Pandas?"