pandas 获取panda列中唯一值的列表

py49o6xq  于 2022-12-21  发布在  其他
关注(0)|答案(3)|浏览(119)

你能帮我解决下面的问题吗?想象一下,我有一个如下的df:

data = {
    'A':['A1, B2, C', 'A2, A9, C', 'A3', 'A4, Z', 'A5, A1, Z'], 
    'B':['B1', 'B2', 'B3', 'B4', 'B4'], 
}
df = pd.DataFrame(data)

我怎样才能创建一个唯一值存储在列'A'的列表?我想smth如下:

list_A = [A1, B2, C, A2, A9, A3, A4, Z, A5]
lbsnaicq

lbsnaicq1#

假设您将逗号分隔的子字符串定义为“值”,则可以使用splitexplodeunique

list_A = df['A'].str.split(',\s*').explode().unique().tolist()

输出:['A1', 'B2', 'C', 'A2', 'A9', 'A3', 'A4', 'Z', 'A5']

ercv8c1e

ercv8c1e2#


代码将lambda函数应用于'A'列,以删除列表中字符串的白色。
接下来,代码使用str.split()方法按分隔符“,”拆分“A”列中的字符串,从而得到一列列表。
最后,代码使用列表解析将列表的列表扁平化为一个列表,然后使用set()函数创建一个包含列表唯一元素的set对象,并将其输出到控制台。

w6lpcovy

w6lpcovy3#

将列A转换为一个合适的列表(新列C),在本例中,我们将得到['A1', 'B2', 'C'],而不是'A1, B2, C'

df['C'] = df['A'].str.split(',\s*')

查找已转换列的已排序唯一值:

set(df['C'].explode())
# {'A1', 'A2', 'A3', 'A4', 'A5', 'A9', 'B2', 'C', 'Z'}

如果排序不重要:

list(df['C'].explode().unique())
# ['A1', 'B2', 'C', 'A2', 'A9', 'A3', 'A4', 'Z', 'A5']

相关问题