如果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。
答案 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