按列索引拆分 Pandas 数据框
Pandas 支持两种数据结构来存储数据,即系列(单列)和数据框,其中值存储在二维表(行和列)中。要使用索引对数据帧进行索引,我们需要使用 dataframe.iloc() 方法,该方法采用
Syntax: pandas.DataFrame.iloc[]
Parameters:
Index Position: Index position of rows in integer or list of integer.
Return type: Data frame or Series depending on parameters
让我们创建一个数据框。在下面的示例中,我们将使用一个简单的二进制数据集来分类一个物种是哺乳动物还是爬行动物。物种列包含标签,其中 1 代表哺乳动物,0 代表爬行动物。数据存储在 dict 中,可以传递给输出数据帧的 DataFrame函数。
Python3
import pandas as pd
dataset = {'toothed': [1, 1, 1, 0, 1, 1, 1, 1, 1, 0],
'hair': [1, 1, 0, 1, 1, 1, 0, 0, 1, 0],
'breathes': [1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
'legs': [1, 1, 0, 1, 1, 1, 0, 0, 1, 1],
'species': [1, 1, 0, 1, 1, 1, 0, 0, 1, 0]
}
df = pd.DataFrame(dataset)
df.head()
Python3
X = df.iloc[:,:-1]
X
Python3
Y = df.iloc[:,-1]
Y
Python3
X = df.iloc[:,[0,1,2,3]]
X
Python3
Y = df.iloc[:,4]
Y
Python3
df.iloc[:,[0,1]]
Python3
df.iloc[:,[2,3,4]]
输出 :
示例 1:现在我们想将物种列与特征列(牙齿、头发、呼吸、腿)分开,为此我们将使用 pandas 提供的 iloc[rows, columns] 方法。
这里 ':' 代表所有行,-1 代表最后一列,因此下面的单元格将获取除最后一行('species')之外的所有行和所有列,如输出所示:
Python3
X = df.iloc[:,:-1]
X
输出:
为了将物种列与数据集的其余部分分开,我们为您制作了一个类似的代码,除了在 cols 位置而不是填充切片,我们传入一个整数值 -1。
Python3
Y = df.iloc[:,-1]
Y
输出 :
示例 2:使用整数列表进行拆分
可以通过传入整数列表而不是切片来获得类似的输出
Python3
X = df.iloc[:,[0,1,2,3]]
X
输出:
对于物种列,我们将使用列的索引 4 我们也可以使用 -1
Python3
Y = df.iloc[:,4]
Y
输出:
示例 3:将数据帧拆分为 2 个单独的数据帧
在上面的两个例子中,Y 的输出是一个系列而不是一个数据框现在我们将把数据框分成两个单独的数据框,这在处理多标签数据集时很有用。将使用相同的数据集。
首先,我们将在柱毛处拆分
Python3
df.iloc[:,[0,1]]
输出:
第二个数据框将包含 3 列呼吸、腿、物种
Python3
df.iloc[:,[2,3,4]]
输出: