我想删除所有值都相同的行。但是,我想要可以应用于1,2,3,4 ... n列的解决方案。
df = pd.DataFrame({"Col1":[1,4,2,5,1,4],
"Col2":[4,5,2,2,3,4],
"Col3":[5,1,2,5,1,4],
"Col4":[3,1,2,4,2,4]})
print(df)
Col1 Col2 Col3 Col4
0 1 4 5 3
1 4 5 1 1
2 2 2 2 2 # delete
3 5 2 5 4
4 1 3 1 2
5 4 4 4 4 # delete
这是4列的示例,但我不知道如何找到解决方案。 因此,在这种情况下,应删除第2行和第5行。
答案 0 :(得分:3)
nunique
df[df.nunique(axis=1) > 1]
Col1 Col2 Col3 Col4
0 1 4 5 3
1 4 5 1 1
3 5 2 5 4
4 1 3 1 2
nunique(axis=1)
告诉您一行中唯一值的数量:
df.nunique(axis=1)
0 4
1 3
2 1
3 3
4 3
5 1
dtype: int64
从这里进行比较,
df.nunique(axis=1) > 1
0 True
1 True
2 False
3 True
4 True
5 False
dtype: bool
查找满足您条件的行,然后将布尔值索引到df
中。
答案 1 :(得分:2)
与std
类似,标准偏差等于0表示所有值都相同
df[df.std(1)!=0]
Col1 Col2 Col3 Col4
0 1 4 5 3
1 4 5 1 1
3 5 2 5 4
4 1 3 1 2
答案 2 :(得分:0)
许多清教徒/表演熊猫爱好者会杀死我,但是:
from pandas import DataFrame
df = DataFrame({"Col1":[1,4,2,5,1,4],
"Col2":[4,5,2,2,3,4],
"Col3":[5,1,2,5,1,4],
"Col4":[3,1,2,4,2,4]})
df_copy = df
for i,j in df_copy.iterrows():
n_of_unique_elements = len(list(set(df_copy.iloc[i].values)))
if n_of_unique_elements<=1:
df = df.drop([i])
print(df)