你能帮我解决下面的问题吗?想象一下,我有一个如下的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]
lbsnaicq1#
假设您将逗号分隔的子字符串定义为“值”,则可以使用split、explode和unique:
split
explode
unique
list_A = df['A'].str.split(',\s*').explode().unique().tolist()
输出:['A1', 'B2', 'C', 'A2', 'A9', 'A3', 'A4', 'Z', 'A5']
['A1', 'B2', 'C', 'A2', 'A9', 'A3', 'A4', 'Z', 'A5']
ercv8c1e2#
代码将lambda函数应用于'A'列,以删除列表中字符串的白色。接下来,代码使用str.split()方法按分隔符“,”拆分“A”列中的字符串,从而得到一列列表。最后,代码使用列表解析将列表的列表扁平化为一个列表,然后使用set()函数创建一个包含列表唯一元素的set对象,并将其输出到控制台。
w6lpcovy3#
将列A转换为一个合适的列表(新列C),在本例中,我们将得到['A1', 'B2', 'C'],而不是'A1, B2, C'。
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']
3条答案
按热度按时间lbsnaicq1#
假设您将逗号分隔的子字符串定义为“值”,则可以使用
split
、explode
和unique
:输出:
['A1', 'B2', 'C', 'A2', 'A9', 'A3', 'A4', 'Z', 'A5']
ercv8c1e2#
代码将lambda函数应用于'A'列,以删除列表中字符串的白色。
接下来,代码使用str.split()方法按分隔符“,”拆分“A”列中的字符串,从而得到一列列表。
最后,代码使用列表解析将列表的列表扁平化为一个列表,然后使用set()函数创建一个包含列表唯一元素的set对象,并将其输出到控制台。
w6lpcovy3#
将列
A
转换为一个合适的列表(新列C
),在本例中,我们将得到['A1', 'B2', 'C']
,而不是'A1, B2, C'
。查找已转换列的已排序唯一值:
如果排序不重要: