【发布时间】:2021-12-19 16:00:46
【问题描述】:
我的公司要求我将数据作为列表上传,并附上报价,这不是最好的,但就是这样。例如,如果我有 2 英寸和 3 英寸的数据,我必须将其上传为 ["2 in", "3 in"]。
当我尝试对列表中每一行的元素进行排序时,我得到:[1, 2, , ", ", [, ], o, z] 它对每个单独的字母和数字进行排序
Example of the DF I am trying to sort:
d = {'col1': ['["3 oz","1 oz","2 oz"]', '["1.2 in","1 in","1.3 in"]', '["10 in","22 in","3.4 in"]']}
df = pd.DataFrame(data=d)
我尝试过的:
def sorted_alphanumeric(data):
convert = lambda text: int(text) if text.isdigit() else text.lower()
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(data, key=alphanum_key)
df['col1'].apply(lambda x: sorted_alphanumeric((x)))
and
from natsort import natsorted
df['col1'].apply(lambda x: natsorted(x))
and
df['col1'].apply(lambda x: sorted(x))
我确信在盯着这个 2 天后我想念它的一些简单的东西,但如果你对如何解决它有任何想法,我将不胜感激。
【问题讨论】:
标签: python pandas list dataframe sorting