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

Poo*_*h V 2 python dataframe python-3.x pandas

我想知道对数据框列(熊猫)的每个列表进行排序。例如:

id       values
------------------------
 1      ['cdf','abc','efg']
 2      ['xyz' ,'rsy','abc']
Run Code Online (Sandbox Code Playgroud)

预期的 :

 id       values
------------------------
 1      ['abc','cdf','efg']
 2      ['abc' ,'rsy','xyz']
Run Code Online (Sandbox Code Playgroud)

谢谢:我也想知道是否存在逗号分隔的字符串而不是列表。

use*_*203 6

只需用applysorted

df['values'].apply(sorted)

0    [abc, cdf, efg]
1    [abc, rsy, xyz]
Name: values, dtype: object
Run Code Online (Sandbox Code Playgroud)

对于逗号分隔值,感谢@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
Run Code Online (Sandbox Code Playgroud)

您还可以使用列表理解来提高性能:

df['values'] = [','.join(sorted(i.split(','))) for i in df['values']]
Run Code Online (Sandbox Code Playgroud)

  • 和 `df['values'].apply(lambda x: ','.join(sorted(x.split(','))))` 用于逗号分隔的字符串。 (3认同)