在pandas中,索引涉及到从一个DataFrame中挑选特定的数据列和行。选择所有的行和部分列,部分的行和所有的列,或者部分的行和列都是索引所需要的。子集选择是索引的另一个名字。当我们使用Pandas模块中的pd.DataFrame()函数在Python中建立一个Pandas DataFrame对象时,会自动产生一个行或列索引的地址来象征DataFrame中的每个数据元素/点。然而,行索引是DataFrame的索引,而列索引则简单地称为列。Pandas DataFrame对象的索引本质上是对某些行的识别。让我们来看看如何改变熊猫的索引DataFrame对象。
例子1
Python中的索引选项可以用来在创建DataFrame时设置它的索引。我们将生成一个列表并将其传递给pd.DataFrame()方法的索引参数。让我们用Python代码将其付诸实践。我们在这里导入了 pandas 模块。在这之后,我们做了一个字典和一个 Python 列表。这个字典被用来启动 DataFrame 的开发。正如你所看到的,我们使用了带有索引参数的DataFrame函数来使 "rr "列成为索引。
import pandas as pd
dd = {'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Marks': [33, 66, 88, 67, 78],
'City': ['New York', 'Los Angeles', 'Chicago', 'San Diego', 'Dallas']}
rr = [1, 2, 3, 4, 5]
ff = pd.DataFrame(dd, index = rr)
print(ff)

请看下面的图片中的输出。

例2
在Python中,我们可以使用各种方法来制作Pandas DataFrame对象的任何现有列的索引。 在这种情况下,我们将使用Python Pandas模块的set index()方法的inplace参数。inplace参数在默认情况下被设置为False。然而,在这种情况下,我们将把 inplace 的值设置为 True。传递给pd.set index()方法的现有列作为新的索引取代了DataFrame的旧索引。让我们看看这是如何工作的。
import pandas as pd
dd = {'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Rollnum': ['1', '2', '3', '4', '5'],
'City': ['New York', 'Los Angeles', 'Chicago', 'San Diego', 'Dallas']}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
ff = ff.set_index('Rollnum')
print("\nFinal DataFrame:")
print(ff)

输出结果在下面的截图中给出。

例三
在这个例子中,我们将使用Python Pandas模块的set index()函数的drop参数。然而,在这种情况下,我们将把 drop 参数设置为 False。这样,DataFrame就不会丢失已经被分配为新索引的列。让我们用下面的代码将其付诸实践。
import pandas as pd
dd = { 'Rollnum' : ['1', '2', '3', '4', '5'],
'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Marks': [33, 66, 88, 67, 78]}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
ff = ff.set_index('Name', drop = False)
print("\nFinal DataFrame:")
print(ff)

下面是结果。

例四
通过创建一个DataFrame列名的列表并将其传递给set index()函数,我们可以像设置索引一样设置Pandas DataFrame对象的若干列。因此,在这种情况下,该索引被称为多索引。
import pandas as pd
dd = {'Rollnum': [1, 2, 3, 4, 5],
'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Marks': [33, 66, 88, 67, 78],
'City': ['New York', 'Los Angeles', 'Chicago', 'San Diego', 'Dallas']}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
ff = ff.set_index(['Rollnum', 'Name'])
print("\nFinal DataFrame:")
print(ff)

这里你可以看到上面的代码的输出。

例五
有几种技术可以用来将Pandas DataFrame对象的位置设置为任何Python对象,比如列表、范围、甚至系列。使用 pd.Index(), set index(), and range() 函数,我们可以用这种方法设置 DataFrame 对象 (Pandas) 的索引。首先,我们将使用range()函数来建立一个Python的整数序列,然后将其发送给pd.Index()函数。这个方法产生DataFrame的索引对象。然后使用set index()函数将返回的DataFrame索引对象设置为DataFrame的新索引。让我们来实现这段代码。
import pandas as pd
dd = {'Rollnum': [1, 2, 3],
'Name': ['Alex', 'Ramen', 'Zayn'],
'Marks': [33, 66, 88],
'City': ['New York', 'Los Angeles', 'Chicago']}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
my_list = ['I', 'II', 'III']
idx = pd.Index(my_list)
ff = ff.set_index(idx)
print("\nFinal DataFrame:")
print(ff)

请看下面的输出。

例6
Pandas DataFrame 对象的索引可以用 set index() 和 pd.Index() 方法来设置。我们将首先创建一个Python列表,然后将其发送给pd.Index()函数。这个函数将给出一个DataFrame索引对象。然后使用 set index() 函数将返回的 DataFrame 索引对象设置为 DataFrame 的新索引。
import pandas as pd
dd = {'Rollnum': [1, 2, 3, 4, 5],
'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Marks': [33, 66, 88, 67, 78],
'City': ['New York', 'Los Angeles', 'Chicago', 'San Diego', 'Dallas']}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
indx = pd.Index(range(1, 6, 1))
ff = ff.set_index(indx)
print("\nFinal DataFrame:")
print(ff)

结果见附件中的截图。

例七
使用pd.Series()和set index()函数,我们可以在前面的方法中设置Pandas的DataFrame对象的索引。生成一个列表并将其传递给pd.Series()函数将返回一个可以作为DataFrame索引对象利用的Pandas序列。生成的潘达斯序列被传递给set index()方法,该方法将其设置为DataFrame的新索引。让我们看看下面的代码,了解一下这是如何工作的。
import pandas as pd
dd = {'Rollnum': [1, 2, 3, 4, 5],
'Name': ['Alex', 'Ramen', 'Zayn', 'Travis', 'Scott'],
'Marks': [33, 66, 88, 67, 78],
'City': ['New York', 'Los Angeles', 'Chicago', 'San Diego', 'Dallas']}
ff = pd.DataFrame(dd)
print("\nInitial DataFrame:")
print(ff)
ser_indx = pd.Series([5, 4, 3, 2, 1])
ff = ff.set_index(ser_indx)
print("\nFinal DataFrame:")
print(ff)

这里你可以看到输出。

结论
索引是在一个DataFrame中从特定的行和列中选择数值的过程。我们可以使用索引来选择所有的行和一些列,或者行和所有的列。这节课讨论的主题有:什么是索引,如何在生成DataFrame时设置索引,如何将现有的DataFrame列设置为索引甚至是多索引,以及如何将Python对象如范围、列表甚至系列设置为索引。