Skip to content

Latest commit

 

History

History
105 lines (89 loc) · 2.76 KB

pandas 之 stack.md

File metadata and controls

105 lines (89 loc) · 2.76 KB

pandas 之 stack

英语中,单词 stack 意为堆叠、堆放、摞起之意。

stack 方法需要通过 DataFrame 对象的实例方法调用,如

df.stack()

现有如下内容的 CSV 格式的数据文件

语言,北京,上海,深圳,杭州
C++,79,29,35,29
Java,61,40,29,50
PHP,19,61,53,77
Python,36,58,73,69
Swift,88,51,58,99
JavaScript,36,58,81,89

加载时需指定列字段

df = pd.read_csv('languages.csv', index_col=['语言'])

得到的 DataFrame 类型的数据如下所示

北京 上海 深圳 杭州
语言
C++ 79 29 35 29
Java 61 40 29 50
PHP 19 61 53 77
Python 36 58 73 69
Swift 88 51 58 99
JavaScript 36 58 81 89

调用

df.stack()

将得到

语言
C++ 北京 79
上海 29
深圳 35
杭州 29
Java 北京 61
上海 40
深圳 29
杭州 50
PHP 北京 19
上海 61
深圳 53
杭州 77
Python 北京 36
上海 58
深圳 73
杭州 69
Swift 北京 88
上海 51
深圳 58
杭州 99
JavaScript 北京 36
上海 58
深圳 81
杭州 89

这是一个 Series 类型的对象,其索引一个多维索引

MultiIndex([(       'C++', '北京'),
            (       'C++', '上海'),
            (       'C++', '深圳'),
            (       'C++', '杭州'),
            (      'Java', '北京'),
            (      'Java', '上海'),
            (      'Java', '深圳'),
            (      'Java', '杭州'),
            (       'PHP', '北京'),
            (       'PHP', '上海'),
            (       'PHP', '深圳'),
            (       'PHP', '杭州'),
            (    'Python', '北京'),
            (    'Python', '上海'),
            (    'Python', '深圳'),
            (    'Python', '杭州'),
            (     'Swift', '北京'),
            (     'Swift', '上海'),
            (     'Swift', '深圳'),
            (     'Swift', '杭州'),
            ('JavaScript', '北京'),
            ('JavaScript', '上海'),
            ('JavaScript', '深圳'),
            ('JavaScript', '杭州')],
           names=['语言', None])