pandas 在Python中按数字和字母排序

lnxxn5zx  于 2023-05-27  发布在  Python
关注(0)|答案(2)|浏览(186)

我有一个pandas系列,50 K行和两列。我需要先按数字顺序再按字母顺序对“syn”列进行排序。
| 姓名|同步器|
| - -----|- -----|
| 名称1| 1616TD、K25、PP785、70-07200|
| 名称2| WTR-098、0616TD、K25、PP785、70-07200|
| 名称50|...|
所以我得到下面的输出:额外分类列
| 姓名|同步器|分类的|
| - -----|- -----|- -----|
| 名称1| 1616TD、K25、PP785、70-07200| 1616TD,70-07200,K25,PP785|
| 名称2| WTR-098、0616TD、K25、PP785、70-07200| 0616TD、70-07200、K25、PP785、WTR-098|
| 名称50|......||
“syn”列是字符串,可以包含连字符和逗号后的空格。我已经分享了前两排的样子。

6l7fqoea

6l7fqoea1#

您可以尝试:

df = pd.DataFrame(
    {'name':['name1', 'name2'], 
     'syn':[['1616TD', 'K25', 'PP785', '70-07200'], ['WTR-098', '0616TD', 'K25', 'PP785', '70-07200']]
    }
)
df.syn = df.syn.apply(lambda x: sorted(x))
print(df)

结果:

name                                      syn
0  name1           [1616TD, 70-07200, K25, PP785]
1  name2  [0616TD, 70-07200, K25, PP785, WTR-098]
bkkx9g8r

bkkx9g8r2#

如果你想在syn列中排序,试试这个:

data["syn"].apply(lambda x:",".join(sorted(list(map(lambda y:y.strip(),x.split(","))))))

相关问题