📅  最后修改于: 2023-12-03 15:36:56.066000             🧑  作者: Mango
在数据分析中,经常需要删除不需要的列,以使数据更加精简和易于分析。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
解析:传递列名称C
给df.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
在此示例中,我们通过将列名称(在这里是C
和D
)放在列表['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删除数据框中的列。删除列可以使数据分析更加轻松,同时可以减少内存使用和处理时间,从而确保高效和准确的分析。