【问题标题】:Column with list values, if list has more than 1 element, decode both values and include in a list in the same row in new column具有列表值的列,如果列表具有超过 1 个元素,则解码这两个值并包含在新列的同一行中的列表中
【发布时间】:2022-01-18 04:43:22
【问题描述】:
我有两列 cat_1 和 cat_2,其中的值有乱码。这是因为我将引用一个 python 库来从那些乱码值中获取信息。
如果列表在一行中有超过 1 个元素,无论是在 cat_1 还是 cat_2,我想继续填充新列 results_1 或 results_2 的行,其值用逗号分隔。示例如下。
如何从 cat_1 和 cat_2... 到 results_1 和 results_2?
【问题讨论】:
标签:
python
pandas
string
list
dataframe
【解决方案1】:
您需要某种映射器词典来告诉我们哪个乱码单词是哪个英语单词。比如:
mapper = {'klys': 'apple', 'chrs': 'orange', 'pqor': 'bag'}
有了这样的映射器,您可以:
df[['results_1','results_2']] = df[['cat_1','cat_2']].stack().str.split(', ').explode().map(mapper).fillna('').groupby(level=[0,1]).apply(lambda x: list(x) if len(x)>1 else (x.values[0] if len(x)==1 else '')).unstack()