Python:如何对df列中的行字符串进行排序?
我有一个df,其中包含一列字符串,字符串之间用逗号分隔,我尝试按字母顺序排序 对于一个简单的列表,如Python:如何对df列中的行字符串进行排序?,python,pandas,sorting,Python,Pandas,Sorting,我有一个df,其中包含一列字符串,字符串之间用逗号分隔,我尝试按字母顺序排序 对于一个简单的列表,如 data = ['B', 'C', 'A', 'D'] 我会用像这样的东西 ', '.join(sorted(data)) 这很好用。 然而,对于我的df来说 d = {'col1': [1, 2], 'col2': ['D, D, A, C', 'B, A, B, A']} df = pd.DataFrame(data=d) 我无法按字母顺序对col2按行排序。 我已经试过了 print
data = ['B', 'C', 'A', 'D']
我会用像这样的东西
', '.join(sorted(data))
这很好用。
然而,对于我的df来说
d = {'col1': [1, 2], 'col2': ['D, D, A, C', 'B, A, B, A']}
df = pd.DataFrame(data=d)
我无法按字母顺序对col2按行排序。
我已经试过了
print ', '.join(sorted(df['col2']))
它返回完整的排序,但不按行。
我的预期结果是:
res = {'col1': [1, 2], 'col2': ['A, C, D, D', 'A, A, B, B']}
result = pd.DataFrame(data=res)
谢谢你的想法 您可以按如下方式使用apply:
df["col2"] = df.col2.apply(lambda x: ", ".join(sorted(x.split(", "))))
说明:
col1 col2
0 1 A, C, D, D
1 2 A, A, B, B
col1 col2
0 1 A, C, D, D
1 2 A, A, B, B
在df.col2.apply(..)
df.col2
- 对于每一行,它使用
x.split(“,”)
- 然后使用
排序(x.split(“,”)
- 然后将排序列表连接到字符串,并使用
", ".join(sorted(x.split(", ")))
输出:
col1 col2
0 1 A, C, D, D
1 2 A, A, B, B
col1 col2
0 1 A, C, D, D
1 2 A, A, B, B
另一种方式是
方法-1
df['col2'] = [', '.join(sorted (val )) for val in df.col2.str.split(', ').values] # split the value by , sort the values and combined it with `, `
print(df)
方法2:
df['col2'] = [', '.join(sorted(x.split(', '))) for x in df['col2']]
print(df) # for each value in cell split the value by `, ` sort the value and join by `, `
O/p: