Skip to content

数据删除

Pandas 提供了多种删除数据的方法。

删除列

python
import pandas as pd

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

# 使用del(原地删除)
del df['C']
print(df)

# 使用drop(返回新对象)
df_new = df.drop('B', axis=1)
print(df_new)

# 删除多列
df_new = df.drop(['A', 'B'], axis=1)
print(df_new)

# 原地删除
df.drop('B', axis=1, inplace=True)
print(df)

删除行

python
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}, index=['a', 'b', 'c'])

# 删除指定行
df_new = df.drop('a')
print(df_new)

# 删除多行
df_new = df.drop(['a', 'b'])
print(df_new)

# 按位置删除
df_new = df.drop(df.index[0])
print(df_new)

删除缺失值

python
df = pd.DataFrame({
    'A': [1, None, 3],
    'B': [4, 5, None],
    'C': [7, 8, 9]
})

# 删除包含缺失值的行
df_clean = df.dropna()
print(df_clean)

# 删除包含缺失值的列
df_clean = df.dropna(axis=1)
print(df_clean)

# 只删除全部缺失的行/列
df_clean = df.dropna(how='all')
print(df_clean)

# 根据阈值删除
df_clean = df.dropna(thresh=2)  # 保留至少2个非空值的行
print(df_clean)

删除重复值

python
df = pd.DataFrame({
    'A': [1, 2, 2, 3],
    'B': [4, 5, 5, 6]
})

# 删除完全重复的行
df_unique = df.drop_duplicates()
print(df_unique)

# 根据指定列删除重复
df_unique = df.drop_duplicates(subset=['A'])
print(df_unique)

# 保留最后一个
df_unique = df.drop_duplicates(keep='last')
print(df_unique)

# 删除所有重复
df_unique = df.drop_duplicates(keep=False)
print(df_unique)

条件删除

python
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# 删除满足条件的行
df_filtered = df[df['A'] > 2]
print(df_filtered)

# 使用query的相反条件
df_filtered = df.query('A <= 2')
print(df_filtered)

掌握数据删除操作,可以灵活地清理不需要的数据。