在数据框列中对列表进行排序

4

我希望了解如何对数据框列(pandas)中的每个列表进行排序。例如:

id       values
------------------------
 1      ['cdf','abc','efg']
 2      ['xyz' ,'rsy','abc']

期望值:

 id       values
------------------------
 1      ['abc','cdf','efg']
 2      ['abc' ,'rsy','xyz']

感谢您的提问: 如果使用逗号分隔的字符串而不是列表,是否同样适用?
1个回答

9

只需使用sortedapply即可。

df['values'].apply(sorted)

0    [abc, cdf, efg]
1    [abc, rsy, xyz]
Name: values, dtype: object

对于逗号分隔的值,感谢@AChampion:

df = pd.DataFrame({'id': [1,2], 'values': ['cdf, abc, efg', 'xyz, rsy, abc']})
df['values'].apply(lambda x: ','.join(sorted(x.split(','))))

0     abc, efg,cdf
1     abc, rsy,xyz
Name: values, dtype: object

您可以使用列表推导式来提高性能:
df['values'] = [','.join(sorted(i.split(','))) for i in df['values']]

4
针对逗号分隔的字符串,使用 df['values'].apply(lambda x: ','.join(sorted(x.split(',')))) 进行处理。该语句将对每个字符串进行拆分、排序,并用逗号重新组合。 - AChampion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接