Python中如何删除DataFrame中的重复列?

萌新请教啊


Python中如何删除DataFrame中的重复列?
2 回复
import pandas as pd

# 创建示例DataFrame(包含重复列)
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9],
    'A': [10, 11, 12],  # 重复列名'A'
    'D': [13, 14, 15]
})

print("原始DataFrame:")
print(df)
print(f"列名: {df.columns.tolist()}")

# 方法1:使用.loc和~duplicated(保留第一个出现的列)
df_unique = df.loc[:, ~df.columns.duplicated()]
print("\n方法1结果(保留第一个出现的列):")
print(df_unique)

# 方法2:指定保留最后一个出现的列
df_unique_last = df.loc[:, ~df.columns.duplicated(keep='last')]
print("\n方法2结果(保留最后一个出现的列):")
print(df_unique_last)

# 方法3:使用transpose转置后去重(更灵活的处理方式)
df_T = df.T
df_unique_T = df_T[~df_T.index.duplicated()].T
print("\n方法3结果(转置法):")
print(df_unique_T)

# 验证列名
print(f"\n去重后的列名: {df_unique.columns.tolist()}")

核心原理: df.columns.duplicated()返回布尔序列标记重复列,~取反后通过.loc切片选择非重复列。

总结建议: 直接用.loc[:, ~df.columns.duplicated()]最简洁。


回到顶部