在熊猫数据框中删除重复的 numpy 数组

时间:2021-03-29 14:17:09

标签: python pandas

我想删除重复坐标。坐标在 x 和 y 列中分开。 我在第一辆车坐标中有一个重复(5,7) 我在第二辆汽车坐标 (4,5) 中有一个副本

我有这个:

cars = pd.DataFrame({'x': [[1,2,3,4,5,5,5,7],[4,4,5,6,7,8]],
                     'y': [[3,4,5,6,7,7,8,9],[5,5,6,7,8,9]]})

我想要这个:

 cars = pd.DataFrame({'x': [[1,2,3,4,5,5,7],[4,5,6,7,8]],
                      'y': [[3,4,5,6,7,8,9],[5,6,7,8,9]]})

我已经尝试过这个并且它有效,只是我认为用熊猫可以更快地解决它,有什么想法吗?

 for i in range(2):
    k= len(cars['x'][i])
    for j in range(k-2):
        if (cars['x'][i][j] == cars['x'][i][j+1]) & (cars['y'][i][j] == cars['y'][i][j+1]):
            cars['x'][i] = np.delete(cars['x'][i], [j + 1])
            cars['y'][i] = np.delete(cars['y'][i], [j + 1])
            k+=1
print(cars)

1 个答案:

答案 0 :(得分:1)

只需使用 applymap() 方法:-

cars=cars.applymap(lambda x:set(x))
cars=cars.applymap(lambda x:list(x))

编辑:如果您不想在 z 列中应用此条件,请使用 apply() 方法:-

cars['x']=cars['x'].apply(lambda x:set(x)).apply(lambda x:list(x))
cars['y']=cars['y'].apply(lambda x:set(x)).apply(lambda x:list(x))
相关问题