2 回答

TA贡献1804条经验 获得超2个赞
我认为需要Series.unstack
有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
对于index
列加DataFrame.rename_axis
有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
修改MultiInex
前,unstack
也可以通过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_month Country
2008-01 der_value_Afghanistan 2
der_value_Albania 3
der_value_Argentina 4
2008-02 der_value_Afghanistan 3
der_value_Albania 4
der_value_Argentina 5
Name: a, dtype: int64
df = s.unstack()
print (df)
Country der_value_Afghanistan der_value_Albania der_value_Argentina
year_month
2008-01 2 3 4
2008-02 3 4 5

TA贡献1777条经验 获得超10个赞
创造性地使用 MultiIndex 内部结构
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
0 2008-01 2 3 4
1 2008-02 3 4 5
添加回答
举报