Python Dataframe使用pd对数据框进行排序.切割范围柱



我有一个大数据框架,我通过使用pd.cut创建了一个温度范围列。这很好。现在我想知道最小-最大值域列中的最小值域。因此,我可以使用这一列对数据框

进行排序我代码:

# 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

使用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演示

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

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

最新更新