pandas中的多级index操作

xiaoxiao2025-02-13  17

在pandas中可以为series和dataframe设置多个index,也就是说可以有多级index和column。这样可以对pandas的操作更加灵活。

import numpy as np import pandas as pd from pandas import Series, DataFrame np.random.seed(666) # series 中的 index s1 = Series(np.random.randn(6), index=[['1', '1', '1', '2', '2', '2'], ['a', 'b', 'c', 'a', 'b', 'c']]) print(s1) ''' 1 a 0.824188 b 0.479966 c 1.173468 2 a 0.909048 b -0.571721 c -0.109497 dtype: float64 ''' print(s1['1']) # 可以 获取 index 为 1 的 series ''' a 0.824188 b 0.479966 c 1.173468 dtype: float64 ''' print(s1['1']['a']) # 0.8241880833175302 print(s1[:, 'a']) ''' 同样是一个 series 1 0.824188 2 0.909048 dtype: float64 ''' # 多级的Series, 可以转化为一个 dataframe df1 = s1.unstack() # 二级series 可以转化dataframe print(df1) ''' a b c 1 0.824188 0.479966 1.173468 2 0.909048 -0.571721 -0.109497 ''' df2 = DataFrame([s1['1'], s1['2']]) print(df2) ''' a b c 0 0.824188 0.479966 1.173468 1 0.909048 -0.571721 -0.109497 ''' # dataframe 转化为 series s2 = df1.unstack() print(s2) ''' a 1 0.824188 2 0.909048 b 1 0.479966 2 -0.571721 c 1 1.173468 2 -0.109497 dtype: float64 ''' s2 = df1.T.unstack() print(s2) ''' 1 a 0.824188 b 0.479966 c 1.173468 2 a 0.909048 b -0.571721 c -0.109497 dtype: float64 ''' # 创建 一个 多级的 dataframe df = DataFrame(np.arange(16).reshape(4, 4), index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]], \ columns=[['beijing', 'beijing', 'shanghai', 'shanghai'], [8, 9, 8, 9]] ) print(df) ''' beijing shanghai 8 9 8 9 a 1 0 1 2 3 2 4 5 6 7 b 1 8 9 10 11 2 12 13 14 15 ''' # 访问 多级 dataframe 的元素 print(df['beijing']) # 返回 也是一个 dataframe ''' 8 9 a 1 0 1 2 4 5 b 1 8 9 2 12 13 ''' print(df['beijing'][8]) # 访问dataframe和访问Series的方法一样 ''' a 1 0 2 4 b 1 8 2 12 Name: 8, dtype: int64 '''
转载请注明原文地址: https://www.6miu.com/read-5024654.html

最新回复(0)