gpt4 book ai didi

sorting - 无法正确排序泰坦尼克号数据集的 Cabin 值

转载 作者:行者123 更新时间:2023-12-05 00:54:19 26 4
gpt4 key购买 nike

所以我有一系列的 Cabin 值;左边是索引,右边是 Cabin 值。使用 sort_values 方法后,我只能对值进行部分排序。

x =  Cabin_Fare=Cabin_Fare.sort_values(['Cabin' ]) 

210 A31
186 A32
446 A34
1185 A34
1266 A34
807 A36
97 A
24 A6
175 A7
1058 B10
738 B101
816 B102
1107 B11
330 B18
524 B18
171 B19
691 B20
660 D48
682 D49
626 D50
22 D56
783 D6
276 D7
628 D9
430 E10
718 E101
304 E101
124 E101
461 E12
752 E121
1234 NaN
1252 NaN
1257 NaN
73 NaN
121 NaN

我遇到的问题是尽管能够对客舱字母进行排序,但我无法按客舱字母所附的数字进行排序。
所以我想要的输出是
97       A 
24 A6
175 A7
210 A31
186 A32
446 A34
1185 A34
1266 A34
807 A36
1058 B10
1107 B11
330 B18
524 B18
171 B19
691 B20
738 B101
816 B102
........

1234 NaN
1252 NaN
1257 NaN
73 NaN
121 NaN

我并不特别关注 NaN 值,但我希望在系列的结尾处使用它们。如有必要,单独的 Cabin 值(例如单独的“A”)可以添加一个“0”,但我希望没有附加数字的字母成为列表中的第一个。

我得到了一些想法,但事实证明这段代码(如下)与字母顺序困惑。我想保留字母顺序。
 x.reindex(x[x.notnull()].str[1:].replace('', 0).astype(int).sort_values().index)

谢谢。

最佳答案

# setup regex for str.extract
# ?P<letter> tells pandas to make that a column with name 'letter'
regex = '(?P<letter>\D+)(?P<digit>\d*)'
# easy access to column names I'm making in extract step
cols = ['letter', 'digit']

# run extract. will pull out letter and digit
split_df = df.Cabin.str.extract(regex, expand=True)
# make sure digit column is numeric and fill with 0
split_df['digit'] = pd.to_numeric(split_df['digit'], 'coerce').fillna(0)
# sort by cols gets us the right sort
split_df.sort_values(cols, inplace=True)
# use sorted split_df.index for a slice
df = df.ix[split_df.index]
df.head(20)

enter image description here

关于sorting - 无法正确排序泰坦尼克号数据集的 Cabin 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249543/

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