gpt4 book ai didi

python - 如何对数据框的列中的元组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:57 25 4
gpt4 key购买 nike

我有一个由一列元组组成的数据框,如图所示:

pid         aid                   
0000000F (0BDEAC61, 288E046F)
00000017 (7795AF0D, 4A259AFA, 7DA84B6E)
00000019 (8123B8CF, 3A25A1FE)
00000025 (28045D98, 8043B6E5, 81195E5D)
0000003A (7D566708, 7F5583AE)

我想对每个元组中的值进行排序,因此结果如下:

pid         aid                   
0000000F (0BDEAC61, 288E046F)
00000017 (4A259AFA, 7795AF0D, 7DA84B6E)
00000019 (3A25A1FE, 8123B8CF)
00000025 (28045D98, 8043B6E5, 81195E5D)
0000003A (7D566708, 7F5583AE)

我知道我可以一次遍历它们并按如下方式排序:

z = list(eval(df.aid.iloc[0]))
z.sort()

但这需要很长时间,因为它是一个巨大的数据框(超过 400 万)。有没有更快的方法。

我也试过:

df.aid = df.aid.apply(lambda x: list(eval(x)).sort())

但我得到了"None"

如有任何帮助,我们将不胜感激。

最佳答案

如果没有 NaN 的值,我认为最简单的是使用 list comprehension:

#import ast
#one possible way for convert string to tuples
#df['aid'] = df['aid'].apply(ast.literal_eval)

print (df['aid'].head().apply(type))
0 <class 'tuple'>
1 <class 'tuple'>
2 <class 'tuple'>
3 <class 'tuple'>
4 <class 'tuple'>
Name: aid, dtype: object

df['aid'] = [tuple(sorted(x)) for x in df['aid']]
print (df)
pid aid
0 0000000F (0BDEAC61, 288E046F)
1 00000017 (4A259AFA, 7795AF0D, 7DA84B6E)
2 00000019 (3A25A1FE, 8123B8CF)
3 00000025 (28045D98, 8043B6E5, 81195E5D)
4 0000003A (7D566708, 7F5583AE)

或者:

df['aid'] = df['aid'].apply(sorted)
print (df)
pid aid
0 0000000F [0BDEAC61, 288E046F]
1 00000017 [4A259AFA, 7795AF0D, 7DA84B6E]
2 00000019 [3A25A1FE, 8123B8CF]
3 00000025 [28045D98, 8043B6E5, 81195E5D]
4 0000003A [7D566708, 7F5583AE]

关于python - 如何对数据框的列中的元组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com