【问题标题】:Pandas: Convert a column into a unique listPandas:将列转换为唯一列表
【发布时间】:2021-06-22 15:46:38
【问题描述】:
df = pandas.read_excel("some_file.xlsx")

identifiers = df["some_data"] #it's a column with names


list = []

for i in identifiers:
        if i not in list:
                list.append(i)

【问题讨论】:

  • 您不需要循环或列表理解。你可以做 df['some_data'].tolist()
  • @acrobat 如果您包含一种处理删除 if i not in list: 暗示的重复项的方法,那将是一个很好的答案
  • @G。安德森公平点。 df['some_data'].unique().tolist() 会做到的
  • @acrobat 最好作为答案而不是评论来回答,这样我就可以投票并且 OP 可以接受它
  • @G.Anderson 完成!谢谢大佬

标签: python pandas list for-loop list-comprehension


【解决方案1】:

不需要任何循环或列表理解。

identifiers = df['some_data'].unique().tolist()

【讨论】:

  • 不错的答案。 +1 提供正确的方式,而不是请求的方式。
【解决方案2】:

这样可以正常工作:

f = [list.append(i) for i in identifiers if i not in list]
print(list)

你不应该使用list作为变量名,例如使用arr这样的名称

arr = []
f = [arr.append(i) for i in identifiers if i not in arr]
print(arr)

【讨论】:

  • 你测试过这个吗? .append() 返回 none,所以 f 将等于 [None, None, None, None, None...
  • f 没用,它只是为了执行操作,是的,我已经测试过了,它可以工作。 f 的值无关紧要
  • 以这种方式使用列表 comp 在技术上可以产生所需的输出,但列表理解首先要避免使用 .append()
  • 列表理解用于分配值而不是首先追加,因此我的回答是无论如何都要追加
  • 我的答案满足了预期的输出,这是首先被问到的,你能给我一个拒绝投票的理由吗?你认为这是误导吗?
【解决方案3】:

尝试:

list = [i for i in pandas.read_excel("some_file.xlsx")["some data"] if i not in list]

注意:如果使用名单,可能会出现名称错误

【讨论】:

  • 但是问题要求做附加操作而不是简单的赋值
  • 无论如何这都会抛出一个NameError,因为您的列表是由列表理解构建的,所以它不存在以供if i not in 条件检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2019-11-28
  • 2019-06-05
相关资源
最近更新 更多