gpt4 book ai didi

python - 检查并删除 DataFrame 的一系列行中的重复邻居值

转载 作者:行者123 更新时间:2023-12-01 07:15:23 25 4
gpt4 key购买 nike

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

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 行 x 260,000 列)。我想要的伪代码将遵循以下逻辑:

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

关于python - 检查并删除 DataFrame 的一系列行中的重复邻居值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58000302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com