将列中的字符串集列表转换为新列

Posted

技术标签:

【中文标题】将列中的字符串集列表转换为新列【英文标题】:Convert List of String Sets in Column to New Column 【发布时间】:2022-01-17 07:45:27 【问题描述】:
df.x



0                                                   []
1    [cat=1, data=adjks, cat=1, data=pqoek, cat=2, data=hjksy]
2                                                   []
3    [cat=1, data=alpqi]
4    [cat=5, data=weee, cat=6, data=wolpwolp]
Name: x, dtype: object

我有一个专栏,其中 ea. row 是集合的列表。我只对 cat=1 的集合感兴趣。

为 ea 迭代此列的最佳方式是什么?行并在新列中提取 cat=1 'data' 值?

我希望得到什么

  new_column
0 
1 adjks, pqoek
2 
3 alpqi
4

【问题讨论】:

你能提供一个可重现的例子吗? 嗨!这与我的代码非常相似。这是数据中的一堆乱码,因为它打算使用另一个表进行解码。 @FrancoPiccolo 编辑:澄清 【参考方案1】:

如果它是一个字符串列表,那么我们可以apply 一个直接作用于集合的函数:

out = df['x'].apply(lambda lst: ', '.join(tuple(s-set(['cat=1']))[0].split('=')[1] for s in lst if 'cat=1' in s))

输出:

0                
1    adjks, pqoek
2                
3           alpqi
4                
dtype: object

【讨论】:

嗨! X 列是 ea 的字符串集列表。排。 'Cat=1' 是一个字符串,即我得到一个错误: KeyError: @purple_plop 我编辑了我的答案。立即尝试。【参考方案2】:
# import Pandas library
import pandas as pd

# create dataframe with a column (names) having list-like elements
data = 'id': [1, 2, 3],
        'names': ["Tom,Rick,Hardy", "Ritu,Shalini,Anjana", "Ali,Amir"]

df = pd.DataFrame(data)

print(df)

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于将列中的字符串集列表转换为新列的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 将列值组合到新列中的列表中

如何将 pandas 列中的 JSON 数据转换为新列

将列从 varchar 转换为 nvarchar 是不是会更改存储在列中的字符串的编码?

将列中的所有值复制到熊猫数据框中的新列

Python/Pandas/Datetime:将列中的整个列表转换为日期时间

如何将 Pandas DataFrame 中字典的字符串表示形式转换为新列?