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()]最简洁。

