Pandas_数据重构stack教程
程序员文章站
2024-01-06 20:24:53
import numpy as np
import pandas as pd
stack
将行索引旋转为列索引,完成层级索引。
下面例子中,先创建一盒5 × 2 的Da...
import numpy as np import pandas as pdstack
将行索引旋转为列索引,完成层级索引。
下面例子中,先创建一盒5 × 2 的DataFrame。
然后对它进行stack,于是原来的行索引变成了外层索引,原来的列索引变成了内层索引了。
df_obj = pd.DataFrame(np.random.randint(0,10, (5,2)), columns=['data1', 'data2']) print df_obj
data1 data2 0 9 0 1 7 4 2 6 1 3 2 7 4 9 1
stacked = df_obj.stack() print stacked
0 data1 9 data2 0 1 data1 7 data2 4 2 data1 6 data2 1 3 data1 2 data2 7 4 data1 9 data2 1 dtype: int64
打印重构之后的数据类型,发现已经从DataFrame转变为了Series类型了。
打印新数据的Index的类型,发现索引的格式变成了多层索引了。
print type(stacked) print type(stacked.index)
unstack
unstack会默认多层索引的series转变为DataFrame,默认情况下是对内索引进行操作,即将内所有转变为DataFrame的列索引。
也可以指定操作的索引级别。lavel=0表示操作外层索引。
# 默认操作内层索引 print stacked.unstack()
data1 data2 0 9 0 1 7 4 2 6 1 3 2 7 4 9 1
# 通过level指定操作索引的级别 print stacked.unstack(level=0)
0 1 2 3 4 data1 9 7 6 2 9 data2 0 4 1 7 1