· 多级index的一级内容或全部内容转到数据内

以index为2个级的数据为例

将0级的数据加入到数据内容

  1. import pandas as pd
  2. import numpy as np
  3. index = pd.MultiIndex.from_tuples([('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name'])
  4. columns = pd.MultiIndex.from_tuples([('speed', 'max'), ('species', 'type')])
  5. df = pd.DataFrame([(389.0, 'fly'), ( 24.0, 'fly'), ( 80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns)
  6. print(df)
  7. print('\n')
  8. df1 = df.reset_index(level=0, col_level=0)
  9. print(df1)
  10. print('\n')
  11. df2 = df.reset_index(level=0, col_level=1)
  12. print(df2)
  13. print('\n')

image.png

  1. import pandas as pd
  2. import numpy as np
  3. index = pd.MultiIndex.from_tuples([('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name'])
  4. columns = pd.MultiIndex.from_tuples([('speed', 'max'), ('species', 'type')])
  5. df = pd.DataFrame([(389.0, 'fly'), ( 24.0, 'fly'), ( 80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns)
  6. print(df)
  7. print('\n')
  8. df0 = df.reset_index(level=0, col_level=0)
  9. print(df0)
  10. print('\n')
  11. df1 = df.reset_index(level=0, col_level=0, col_fill=None)
  12. print(df1)
  13. print('\n')
  14. df2 = df.reset_index(level=0, col_level=1, col_fill='species')
  15. print(df2)
  16. print('\n')
  17. df3 = df.reset_index(level=0, col_level=0, col_fill='genus')
  18. print(df3)
  19. print('\n')

image.png
image.png

将1级的数据加入到数据内容

  1. import pandas as pd
  2. import numpy as np
  3. index = pd.MultiIndex.from_tuples([('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name'])
  4. columns = pd.MultiIndex.from_tuples([('speed', 'max'), ('species', 'type')])
  5. df = pd.DataFrame([(389.0, 'fly'), ( 24.0, 'fly'), ( 80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns)
  6. print(df)
  7. print('\n')
  8. df0 = df.reset_index()
  9. print(df0)
  10. print('\n')
  11. df1 = df.reset_index(level=1)
  12. print(df1)
  13. print('\n')
  14. df2 = df.reset_index(level='name')
  15. print(df2)

image.png

  1. import pandas as pd
  2. import numpy as np
  3. index = pd.MultiIndex.from_tuples([('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name'])
  4. columns = pd.MultiIndex.from_tuples([('speed', 'max'), ('species', 'type')])
  5. df = pd.DataFrame([(389.0, 'fly'), ( 24.0, 'fly'), ( 80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns)
  6. print(df)
  7. print('\n')
  8. df0 = df.reset_index(level=1, col_level=0)
  9. print(df0)
  10. print('\n')
  11. df1 = df.reset_index(level=1, col_level=0, col_fill=None)
  12. print(df1)
  13. print('\n')
  14. df2 = df.reset_index(level=1, col_level=1, col_fill='species')
  15. print(df2)
  16. print('\n')
  17. df3 = df.reset_index(level=1, col_level=0, col_fill='genus')
  18. print(df3)
  19. print('\n')

image.png
image.png

· 使用列表添加第二级索引对列进行手动分组

  1. import pandas as pd
  2. data = {"apple": [7,5,6,4,7,5,8,6],
  3. "strawberry": [3,5,2,1,3,0,4,2],
  4. "banana": [1,2,1,2,2,2,1,3],
  5. "chocolate" : [5,8,4,2,1,6,4,5],
  6. "cake":[4,4,5,1,3,0,0,3]
  7. }
  8. data = pd.DataFrame(data)
  9. food_cat = ["fv","fv","fv","j","j"]
  10. data.columns = pd.MultiIndex.from_arrays([food_cat, data.columns])
  11. data

image.png
image.png
参考资料:https://www.5axxw.com/questions/content/nnnrx3