如何在熊猫中删除具有不同标签和相同行值的多列

时间:2019-07-23 01:32:46

标签: pandas python-2.7

如果Pandas DataFrame中的多列标签不同但行值相同,如何将它们删除?

  A B C D E
0 1 1 1 2 2
1 0 0 0 0 0
2 1 1 1 1 1
3 0 1 0 0 0

我想要一个只有A,B,D的df。

2 个答案:

答案 0 :(得分:1)

这是duplicated

的一种方法
df=df.loc[:,~df.T.duplicated()]
df
   A  B  D
0  1  1  2
1  0  0  0
2  1  1  1
3  0  1  0

答案 1 :(得分:0)

这是到目前为止我发现最好删除具有相同值和不同标签的多列的最佳方法。它的工作原理是将每列的值转换为列表,然后将其转换为字符串,然后使用drop_duplicates()。

import pandas as pd

df = pd.DataFrame({'A':[1,0,1,0,],'B':[1,0,1,1],'C':[1,0,1,0],
        'D':[2,0,1,0],'E':[2,0,1,0]})

# Create a separate data frame
dff = pd.DataFrame(columns = ['labels','lists'])

for col in df.columns.values:

    # Convert each column to a list
    dff.loc[len(dff)] = [col, df[col].to_list()]

# Convert list to string
dff.lists = dff.lists.astype(str)
dff = dff.drop_duplicates('lists')
new_cols = dff.labels.values
df = df[new_cols]

  A B D
0 1 1 2
1 0 0 0 
2 1 1 1
3 0 1 0