【发布时间】:2021-09-02 11:53:51
【问题描述】:
这个想法是按两列对值进行排序。 这样,给定两列,我期望输出类似于
预期输出
x y
0 2.0 NaN
1 3.0 NaN
2 4.0 4.1
3 NaN 5.0
4 10.0 NaN
5 24.0 24.7
6 31.0 31.4
但是,使用下面的代码
import pandas as pd
import numpy as np
df1 = pd.DataFrame ( {'x': [2, 3, 4, 24, 31, '',10],
'y':['','',4.1,24.7,31.4,5,'']} )
df1.replace(r'^\s*$', np.nan, regex=True,inplace=True)
rslt_df = df1.sort_values ( by=['x', 'y'], ascending=(True, True) )
print(rslt_df)
生成以下内容
x y
0 2.0 NaN
1 3.0 NaN
2 4.0 4.1
6 10.0 NaN
3 24.0 24.7
4 31.0 31.4
5 NaN 5.0
请注意,在最后一行,y 列的5.0 位于底部。
我可以知道对代码进行了哪些修改以获得预期的输出吗?
【问题讨论】:
-
之所以是这样,是因为它是按X排序(nan到底部),然后是Y。