Python 检查和删除数据帧的一系列行中的重复邻居值

Python 检查和删除数据帧的一系列行中的重复邻居值,python,python-3.x,pandas,duplicates,rows,Python,Python 3.x,Pandas,Duplicates,Rows,我在数据帧中有一组行,这些行有一些重复的相邻值,它们都位于每列的相同位置,如下所示: row_data = pd.DataFrame({0 : [1.1, 1.2, 1.2, 1.3, 1.4, 1.5, 1.5, 1.6], 1 : [2.3, 2.2, 2.2, 2.3, 2.4, 2.5, 2.5, 2.6], 2 : [2.4, 2.2, 2.2, 2.3, 2.4, 2.6, 2.6, 2.7], 3 : [7.1, 7.2, 7.2, 7.3, 7.4, 7.5, 7.5, 7.6]

我在数据帧中有一组行,这些行有一些重复的相邻值,它们都位于每列的相同位置,如下所示:

row_data = pd.DataFrame({0 : [1.1, 1.2, 1.2, 1.3, 1.4, 1.5, 1.5, 1.6],
1 : [2.3, 2.2, 2.2, 2.3, 2.4, 2.5, 2.5, 2.6],
2 : [2.4, 2.2, 2.2, 2.3, 2.4, 2.6, 2.6, 2.7],
3 : [7.1, 7.2, 7.2, 7.3, 7.4, 7.5, 7.5, 7.6]}).T
如上所述,第0行中的(1.2,1.2)与第1行中的(2.2,2.2)、第2行中的(2.2,2.2)和第3行中的(7.2,7.2)处于相同的位置,以此类推

我希望能够首先检查每一行中是否有重复的邻域,删除重复的,只保留它的第一个实例,并计算删除的重复总数

我试着迭代每一行,但这太耗费时间了,因为这个数据帧非常大(36行260000列)。我想要的伪代码将遵循以下逻辑:

count_dup = 0
for index in range(0, len(row_data.columns)):
    if row_data[index] == row_data[index+1]:
         count_dup = count_dup + 1
         row_data[index] = np.nan
我的伪代码显然不起作用,但剩下的就是通过删除所有列中的重复项来删除NAN

产出将是:

row_data_dropped = pd.DataFrame({0 : [1.1, 1.2, 1.3, 1.4, 1.5, 1.6],
1 : [2.3, 2.2, 2.3, 2.4, 2.5, 2.6],
2 : [2.4, 2.2, 2.3, 2.4, 2.6, 2.7],
3 : [7.1, 7.2, 7.3, 7.4, 7.5, 7.6]}).T

total_dropped_neighbors = 8

我有什么办法可以做到这一点吗?

IIUC,以下是我要尝试的:

non_dups = row_data.ne(row_data.shift(1,axis=1)).any()

row_data.loc[:,non_dups]
输出:

     0    1    3    4    5    7
0  1.1  1.2  1.3  1.4  1.5  1.6
1  2.3  2.2  2.3  2.4  2.5  2.6
2  2.4  2.2  2.3  2.4  2.6  2.7
3  7.1  7.2  7.3  7.4  7.5  7.6

看起来您混淆了行和列。您的代码示例有4列8行。这是否会将问题更改为36列260k行,然后更改算法?请澄清,谢谢。抱歉。谢谢你的更正。我已将问题更改为正确的格式。行数据应具有(4,8)8列乘4行。对于您的数据,是否
total\u drop\u neighbories=8
?是的,抱歉。忘记了保留每个副本的一个实例。谢谢,@QuangHoangElegant,与任何紧凑型数据帧操作一样快。非常感谢。