📜  如何在 Pandas DataFrame 中查找和删除重复列?(1)

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

如何在 Pandas DataFrame 中查找和删除重复列?

在 Pandas 中,使用 DataFrame 对象可以方便地进行数据处理和数据分析。在实际工作中,我们经常需要去除重复的数据,包括重复行和重复列。本文将介绍如何在 Pandas DataFrame 中查找和删除重复列。

1. 查找重复列

我们可以使用 DataFrame.transpose() 方法将数据框的行和列互换,然后使用 DataFrame.duplicated() 方法查找重复的行,最后再将数据框的行和列互换回来,即可得到重复的列。

import pandas as pd

# 创建一个有重复列的 DataFrame 对象
df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12],
    'D': [1, 2, 3, 4],
    'E': [13, 14, 15, 16],
})

# 将行和列互换
df_transpose = df.transpose()

# 查找重复列
duplicated_columns = df_transpose.duplicated()

# 将列名和重复列名进行匹配
duplicated_column_names = df_transpose.loc[duplicated_columns].index.tolist()

# 将列名转换成原始的列名
original_column_names = [df.columns[df.columns.get_loc(i)] for i in duplicated_column_names]

# 输出重复列的列名
print('重复列的列名:', original_column_names)

运行以上代码,输出结果为:

重复列的列名: ['D']

其中,重复的列为 'D'。

2. 删除重复列

我们可以使用 DataFrame.drop() 方法删除重复的列。

# 删除重复列
df = df.drop(columns=duplicated_column_names)

# 输出删除重复列后的 DataFrame
print(df)

运行以上代码,输出结果为:

   A  B   C   E
0  1  5   9  13
1  2  6  10  14
2  3  7  11  15
3  4  8  12  16

其中,重复的列 'D' 已经被删除。