我有一个包含列code
和的数据框images
。
列images
是urls
由逗号连接的字符串:<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] 删除。
我来说两句