簡體   English   中英

如何刪除具有重復值的不同列名?

[英]How to delete different column names with duplicated values?

給定這個 DF:

a   b   c   d
1   2   1   4
4   3   4   2
foo bar foo yes

在大型 pandas DF 中刪除相同但名稱不同的列的最佳方法是什么? 例如:

a   b   d
1   2   4
4   3   2
foo bar yes

列 c 已從上述 dataframe 中刪除,因為 a 和 c 列相同但名稱不同。 到目前為止,我試圖

df = df.iloc[:, ~df.columns.duplicated()]

但是我不清楚如何檢查 DF 中的行值?

如下使用transpose

df.T.drop_duplicates().T

我嘗試了直接的方法 - 遍歷列名並將每一列與其他列的 rest 進行比較。 使用np.all進行完全匹配。 這些方法只用了 336ms。

repeated_columns = []
for i, column in enumerate(df.columns):
    r_columns = df.columns[i+1:]
    for r_c in r_columns:
        if np.all(df[column] == df[r_c]):
            repeated_columns.append(r_c)
new_columns = [x for x in df.columns if x not in repeated_columns]
df[new_columns]

它會給你以下 output

     a    b    d
0    1    2    4
1    4    3    2
2  foo  bar  yes
df.loc[:,~df.T.duplicated()]
     a    b    d
0    1    2    4
1    4    3    2
2  foo  bar  yes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM