📜  删除数据框 pandas 中的列 - Python (1)

📅  最后修改于: 2023-12-03 15:36:56.066000             🧑  作者: Mango

删除数据框 pandas 中的列 - Python

在数据分析中,经常需要删除不需要的列,以使数据更加精简和易于分析。Pandas 提供了一个非常简单的方法来删除数据框中的列。

删除一列或多列

pandas.DataFrame.drop()方法用于删除行或列。对于删除列,需要将参数axis的值设为 1 。除了给出要删除的列名外,还可以通过给出要删除的列的索引号来指定要删除的列。

假设我们有以下数据框df:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
print(df)

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
删除一列

假如我们需要删除列 C,可以使用以下代码:

df.drop('C', axis=1, inplace=True)
print(df)

   A  B
0  1  4
1  2  5
2  3  6

解析:传递列名称Cdf.drop()函数,将axis=1指定为删除列。最后,转换必须为原始 DataFrame 指定 inplace=True

删除多列

如果我们需要删除多列,可以通过将列名称放在列表中作为指定参数来执行相同的操作。

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'D': [10, 11, 12]})
df.drop(['C', 'D'], axis=1, inplace=True)
print(df)

   A  B
0  1  4
1  2  5
2  3  6

在此示例中,我们通过将列名称(在这里是CD)放在列表['C', 'D']中来指定要删除的列名称,然后在df.drop()方法中设置axis=1以删除列。

删除在条件语句下的多列

我们可以使用Python条件语句来过滤掉不必要的列,例如删除所有值均为零的列。

# Example dataframe
df = pd.DataFrame({'A': [1, 2, 3], 'B': [0, 0, 0], 'C': [7, 8, 9], 'D': [10, 0, 12], 'E': [0, 0, 0]})
print(df)

# 删除所有值为0的列
df = df.loc[:, (df != 0).all(axis=0)]
print(df)

   A  B  C   D  E
0  1  0  7  10  0
1  2  0  8   0  0
2  3  0  9  12  0
   A  C   D
0  1  7  10
1  2  8   0
2  3  9  12

在该示例中,我们使用了条件语句df != 0来得到一个布尔值数据框,该数据框显示数据框中的非零元素。接下来,我们使用方法all(axis=0)来返回一个布尔值数组,它的长度与数据框的列数相同,并因此只包含在所有行中具有非零值的列。最后,我们使用方法loc [](或iloc [])在数据框上进行切片,以获得要删除的列的子数据框。最终,只包括所有行中至少包含一个非零值的列。

结论

在本文中,我们详细介绍了如何使用Pandas删除数据框中的列。删除列可以使数据分析更加轻松,同时可以减少内存使用和处理时间,从而确保高效和准确的分析。