📜  如何在 Pandas 中展平 MultiIndex?

📅  最后修改于: 2022-05-13 01:54:43.015000             🧑  作者: Mango

如何在 Pandas 中展平 MultiIndex?

在本文中,我们将讨论如何在 pandas 中展平 multiIndex。

展平所有级别的 MultiIndex:

在这种方法中,我们将使用 reset_index()函数来平整数据帧的所有级别。

语法

dataframe.reset_index(inplace=True)

注意: Dataframe 是输入数据框,我们要创建数据框 MultiIndex。

语法

MultiIndex.from_tuples([(tuple1),.......,(tuple n),names=[column_names])

论据:

  • 元组是值
  • 列名是每个元组值中的列名

示例

在此示例中,我们将创建一个数据框以及 multiIndex 并以Python编程语言显示它。

Python3
import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63], 
                     'sahithi': [78, 89, 80, 98, 63]},  
                    index=data)
  
# display
data


Python3
import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93], 
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
  
  
# flatten the index of all levels
data.reset_index(inplace=True)
  
# display
data


Python3
import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93], 
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
  
# flatten the index of level with course column
data.reset_index(inplace=True, level=['Course'])
  
# display
data


Python3
import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63], 
                     'sahithi': [78, 89, 80, 98, 63]}, 
                    index=data)
  
# flatten the index of level with course 
# and subject id columns
data.reset_index(inplace=True, level=['Course', 'subject id'])
  
# display
data


Python3
import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]}, 
                    index=data)
  
pd.DataFrame(data.to_records())


输出:

现在,我们将展平所有级别的索引:

Python3

import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93], 
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
  
  
# flatten the index of all levels
data.reset_index(inplace=True)
  
# display
data

输出:

展平 MultiIndex 的特定级别

通过使用特定级别,我们可以使用以下语法获得:

dataframe.reset_index(inplace=True,level=['level_name'])

在哪里

  • 数据框是输入数据框
  • level_name 是多索引级别的名称

例子:

在此示例中,我们将创建一个数据框并展平特定级别的 multiIndex 并以Python编程语言显示它。

Python3

import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93], 
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
  
# flatten the index of level with course column
data.reset_index(inplace=True, level=['Course'])
  
# display
data

输出:

我们还可以指定多个级别;

Python3

import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63], 
                     'sahithi': [78, 89, 80, 98, 63]}, 
                    index=data)
  
# flatten the index of level with course 
# and subject id columns
data.reset_index(inplace=True, level=['Course', 'subject id'])
  
# display
data

输出:

使用 to_records() 方法

这是一个 pandas 模块方法,用于将多索引数据帧转换为每个记录并显示。

语法

dataframe.to_records()

例子:

Python3

import pandas as pd
  
# create DataFrame muktiindexex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
  
# create dataframe with student marks
  
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]}, 
                    index=data)
  
pd.DataFrame(data.to_records())

输出: