Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在dataframe中删除在许多列中具有相同值的行_Python_Excel_Pandas_Numpy - Fatal编程技术网

Python 在dataframe中删除在许多列中具有相同值的行

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

我有一个如下表,列名随时间而变化。我只想保留这些行,其中任何ww与ww12之间都有差异。在下表中,我希望保留第3行和第7行,并删除其他行。 第三排ww17#ww12 第7排第16次世界大战第12次世界大战 请帮帮我,提前谢谢

    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