【问题标题】:How to remove duplicate elements from numpy arrays in columns in pandas?如何从熊猫列中的numpy数组中删除重复元素?
【发布时间】:2021-12-27 13:19:49
【问题描述】:

我在 B 列中有以下数据集和 numpy 数组,我想通过删除 B 列中数组的重复元素来制作“new_column”,如图所示。

A   B                                            new Column
1   ["A","a","123","123","A"]                    ["A","a","123"]  
2   ["abc","a","1234","123","abc"]               ["abc","a","1234","123"]
3   ["abcd","abcd","abcd"]                       ["abcd"]
4   ["hello","mello"]                            ["hello","mello"]
5   ["hi","hi","why"]                            ["hi","why"]

我正在使用以下代码,但它们没有提供所需的输出。请帮助。

def u_value(a):
   return np.unique(a)

def ddpe(a):
    a=list(dict.fromkeys(a))
    return a

【问题讨论】:

  • df['new'] = df['B'].apply(np.unique),注意。仅仅为了调用另一个函数而构建一个函数是没有用的;)
  • 嘿,是的,但它不起作用。而是用这样的双括号给出相同的值:[["A","a","123","123","A"]]
  • 我敢打赌:你有一个字符串 ;)
  • 是的。我觉得你是对的。那么应该怎么做
  • 查看下面的答案

标签: python arrays pandas numpy-ndarray


【解决方案1】:

这里的问题值不是列表,而是字符串,所以使用ast.literal_eval 表示列表:

import ast

def ddpe(a):
   return list(dict.fromkeys(ast.literal_eval(a)))

df['new Column'] = df['B'].apply(ddpe)

【讨论】:

  • 嘿,它不工作。它给出了例如第一行的输出。[[, ", A, ,, a, 1, 2, 3, ]]
  • print (df.B.head().tolist()) 是什么?
  • 它的 ['["A","a","123","123","A"]', '["abc","a","1234","123 ","abc"]', '["abcd","abcd","abcd"]', '["hello","mello"]', '["hi","hi","why"' ]
  • @Cuckoo - 答案已编辑。
  • 哦,好的。知道了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 2016-04-11
  • 2019-05-22
  • 2020-03-26
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多