pandas Python Dataframe使用pd.cut range列对数据框进行排序

92vpleto  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(112)

我有一个很大的 Dataframe ,我使用pd.cut创建了一个温度范围列。这很好。现在我想知道最小-最大范围列中的最小范围。因此,我可以使用此列对 Dataframe 进行排序
我的代码:

# Goal: sort below dataframe by the 'temp_range' columns
# The column should be sorted as '-60-50','-10-0','0-10','20-30'
xdf = pd.DataFrame(data={'temp_range':['-10-0','20-30','-60-50','0-10']})
xdf['Min. temp range']= xdf['temp_range'].apply(lambda x:x[:3])
xdf

当前解决方案:

temp_range  Min. temp range
0   -10-0   -10
1   20-30   20-
2   -60-50  -60
3   0-10    0-1

预期解决方案:

temp_range  Min. temp range
0   -10-0   -10
1   20-30   20
2   -60-50  -60
3   0-10    0

按“最小温度范围”列对此预期解决方案排序

xdf.sort_values('Min. temp range')
    temp_range  Min. temp range
0   -60-50  -60
1   -10-0   -10
2   0-10    0
3   20-30   20
xam8gpfp

xam8gpfp1#

使用str.extract

xdf['Min. temp range'] = xdf['temp_range'].str.extract('^(-?\d+)')

输出:

temp_range Min. temp range
0      -10-0             -10
1      20-30              20
2     -60-50             -60
3       0-10               0

regex demo
如果你不需要列,只想排序:

xdf.sort_values(by='temp_range', key=lambda s: pd.to_numeric(s.str.extract('^(-?\d+)', expand=False)))

输出:

temp_range
2     -60-50
0      -10-0
3       0-10
1      20-30

相关问题