Pandas:将列转换为唯一列表

Posted

技术标签:

【中文标题】Pandas:将列转换为唯一列表【英文标题】:Pandas: Convert a column into a unique list 【发布时间】: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 完成!谢谢大佬 【参考方案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 条件检查

以上是关于Pandas:将列转换为唯一列表的主要内容,如果未能解决你的问题,请参考以下文章

Python/Pandas - 性能改进 - 将列分成多个部分并将字符串序列转换为列表

使用 Pandas 将列转换为行

Pandas 将列多索引转换为行多索引

python 将列转换为pandas to_datetime()

python Pandas - 将列转换为字符串或数字类型

Pandas-将列值转换为顺序整数