gpt4 book ai didi

python - Pandas 数据框 : Sort list column in dataframe

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

我有如下数据框:

   |            types |     TypeList
0 | Q11424 (item) | Q11424 (item),Q571 (item)
1 | Q571 (item) | Q10 (item),Q24 (item)
0 | Q11012 (item) | Q3 (item)
0 | Q4830453 (item) | Q4 (item)
0 | Q7725634 (item) | Q67 (item),Q12 (item)

我想按升序对 TypeList 列中的元素进行排序。即,类型列表的每一行都应该根据它的整数部分进行排序。我基本上想要如下输出:

   |            types |     TypeList
0 | Q11424 (item) | Q571 (item),Q11424 (item)
1 | Q571 (item) | Q10 (item),Q24 (item)
0 | Q11012 (item) | Q3 (item)
0 | Q4830453 (item) | Q4 (item)
0 | Q7725634 (item) | Q12 (item),Q67 (item)

我能够从此 TypeList 列中删除所有字符,仅保留“,”分隔的字符串并将其进一步转换为列表,即该列的每一行现在都是类型字符串列表。我想对其进行排序,所以我做了如下操作:

df.TypeList.apply(lambda x: (int(y) for y in x))

但它给出的结果数据框的所有行值为

<generator object <lambda>.<locals>.<genexpr> ...

我不确定如何解决这个问题。谁能帮我解决一下。

提前致谢。

最佳答案

import re
import operator

for i in df.index:
x = df.loc[i,'TypeList']
# x == 'Q11424 (item),Q571 (item)'
y = x.split(',')
y = {int(re.search(r'(?<=Q)\d+', k).group(0)):k for k in y}
# y == {11424: 'Q11424 (item)', 571: 'Q571 (item)'}
sorted_y = sorted(y.items(), key=operator.itemgetter(0))
# sorted_y == [(571, 'Q571 (item)'), (11424, 'Q11424 (item)')]
sorted_x = ','.join([i[1] for i in sorted_y])
# sorted_x == 'Q571 (item),Q11424 (item)'
df.loc[i, 'TypeList'] = sorted_x

这个不使用apply,因为我不熟悉它。但我希望你明白这一点。

关于python - Pandas 数据框 : Sort list column in dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727774/

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