具有表示集合列表的字符串值的列,将相关信息提取到新列
Posted
技术标签:
【中文标题】具有表示集合列表的字符串值的列,将相关信息提取到新列【英文标题】:Column with String Values Representing List of Sets, Extract Relevant Info to New Columns 【发布时间】:2022-01-18 01:35:11 【问题描述】:我得到了一些丑陋的数据。我有一个带有列 C 的数据框,它的值是 ea 的字符串。排。但是,它有点复杂。字符串如下所示。
是的,它们是字符串。不,绝对不是字符串集的列表……完全是字符串。
我想遍历 ea。行并从具有 cat=1 和 cat=2 的集合(实际上是字符串)中获取“信息”值(实际上是字符串),以创建两个要填充的新列。我想要什么:
想法?
【问题讨论】:
【参考方案1】:你可以像这样清理:
temp = df['C'].str.strip('[]').str.split(', ').explode()
df['cat_1'] = temp.apply(lambda x: x[13:].strip('') if x[1:6]=='cat=1' else '').reset_index().groupby('index').agg(lambda x: ', '.join(x))['C'].str.strip(', ')
df['cat_2'] = temp.apply(lambda x: x[13:].strip('') if x[1:6]=='cat=2' else '').reset_index().groupby('index').agg(lambda x: ', '.join(x))['C'].str.strip(', ')
输出:
C cat_1 cat_2
0 []
1 [cat=1, data=adjks, cat=1, data=pqoek, ca... adjks, pqoek hjksy
2 []
3 [cat=1, data=alpqi] alpqi
4 [cat=5, data=weee, cat=6, data=wolpwolp]
【讨论】:
太棒了!对我有用的是 x[1:7] vs x[1:6]。干得好,谢谢。 我需要顺便解码这些值。我正在考虑在新列中转换为列表一次......然后我可以使用我拥有的另一个表进行迭代以解码它们。如果一个列表有超过 1 个元素,我将继续将这些值附加在一起,例如...索引 1...我将在一个名为 decoded 的新列中添加胡萝卜、苹果。顺便说一句,如果您愿意,我可以提出一个新问题并给您加分。 ***.com/questions/70356195/…以上是关于具有表示集合列表的字符串值的列,将相关信息提取到新列的主要内容,如果未能解决你的问题,请参考以下文章
具有列表值的列,如果列表具有超过 1 个元素,则解码这两个值并包含在新列的同一行中的列表中
Pyspark/SQL 将具有列表值的列连接到另一个数据框列