熊猫groupby到新专栏

米兰诺

我有一个包含列code的数据框images

imagesurls由逗号连接的字符串<URL>,<URL2>,...

code不是唯一的,我需要使其唯一,但是将所有图像(来自所有变体)存储在新列中images_all

例如:

code something images
1    x         url1,url2,url3
1    x         url1,url4

结果是:编写一些images_all 1 x url1,url2,url3,url4的代码

我做了

grouped = csv.groupby('code')
csv = csv.drop_duplicates(subset=['code'], keep='last')
csv['images_all'] = csv.apply(lambda r:  list(set(
    [image for image in grouped.get_group(r['code'])['images']]
)))

引起:

KeyError: 'code'

但是,即使没有提出这个建议,问题仍然是图像不会出现[url1,url2,url3,url4]相反,它将是["url1,url2,url3","url1,url4"]

你知道如何解决吗?

编辑

我还想保留其他列(对于具有相同代码的所有行,它们都是相同的,这就是为什么我然后只需要drop_duplicates并保留最后一行)

耶斯列尔

GroupBy.transform与自定义函数一起使用,用于展平拆分的值,然后转换为集合和最后一个join唯一值:

f = lambda x: ','.join(set([z for y in x for z in y.split(',')]))
df['images_all'] = df.groupby('code')['images'].transform(f)
print (df)
   code something          images           images_all
0     1         x  url1,url2,url3  url1,url3,url2,url4
1     1         x       url1,url4  url1,url3,url2,url4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章