Python 在dataframe中删除在许多列中具有相同值的行
我有一个如下表,列名随时间而变化。我只想保留这些行,其中任何ww与ww12之间都有差异。在下表中,我希望保留第3行和第7行,并删除其他行。 第三排ww17#ww12 第7排第16次世界大战第12次世界大战 请帮帮我,提前谢谢Python 在dataframe中删除在许多列中具有相同值的行,python,excel,pandas,numpy,Python,Excel,Pandas,Numpy,我有一个如下表,列名随时间而变化。我只想保留这些行,其中任何ww与ww12之间都有差异。在下表中,我希望保留第3行和第7行,并删除其他行。 第三排ww17#ww12 第7排第16次世界大战第12次世界大战 请帮帮我,提前谢谢 Type WW12 WW13 WW14 WW15 WW16 WW17 WW18 WW19 WW20 0 AA 1.999857143 1.999857
Type WW12 WW13 WW14 WW15 WW16 WW17 WW18 WW19 WW20
0 AA 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143 1.999857143
1 AA 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
2 AA 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143
3 BB 1.457285714 1.457285714 1.457285714 1.457285714 1.457285714 1.863928571 1.863928571 1.863928571 1.863928571
4 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
5 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
6 BB 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143 1424.593143
7 BB 1.863928571 1.863928571 1.863928571 1.863928571 2.878857143 2.878857143 2.878857143 2.878857143 2.878857143
8 BB 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000 24000000
使用:
如果要仅比较第二列:
df2 = df[df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0).any(axis=1)]
print (df2)
Type WW12 WW13 WW14 WW15 WW16 WW17 WW18 \
3 BB 1.457286 1.457286 1.457286 1.457286 1.457286 1.863929 1.863929
7 BB 1.863929 1.863929 1.863929 1.863929 2.878857 2.878857 2.878857
WW19 WW20
3 1.863929 1.863929
7 2.878857 2.878857
说明:
按位置选择第二列:
print (df.iloc[:, 1])
0 1.999857e+00
1 2.400000e+07
2 1.424593e+03
3 1.457286e+00
4 2.400000e+07
5 2.400000e+07
6 1.424593e+03
7 1.863929e+00
8 2.400000e+07
Name: WW12, dtype: float64
按位置删除第一列,并按第二列进行比较:
print (df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0))
WW12 WW13 WW14 WW15 WW16 WW17 WW18 WW19 WW20
0 False False False False False False False False False
1 False False False False False False False False False
2 False False False False False False False False False
3 False False False False False True True True True
4 False False False False False False False False False
5 False False False False False False False False False
6 False False False False False False False False False
7 False False False False True True True True True
8 False False False False False False False False False
每行至少比较一个True
:
print (df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0).any(axis=1))
0 False
1 False
2 False
3 True
4 False
5 False
6 False
7 True
8 False
dtype: bool
在第一种解释中,在第二种方法的末尾使用了
值
,但没有使用。请解释一下。@PIG-当然。如果使用为df1
设置索引
,然后选择原始df
的值,则会出现问题对齐数据-df。索引与df1.index
不同。因此为没有索引的numpy数组添加了.values
,因此没有对齐。
print (df.iloc[:, 1:].ne(df.iloc[:, 1], axis=0).any(axis=1))
0 False
1 False
2 False
3 True
4 False
5 False
6 False
7 True
8 False
dtype: bool