Python 为什么我的熊猫数据框不使用“排序”值显示新顺序?

Python 为什么我的熊猫数据框不使用“排序”值显示新顺序?,python,pandas,sorting,dataframe,Python,Pandas,Sorting,Dataframe,熊猫是新来的,所以也许我错过了一个好主意? 我有一个类似(500,4)形状的寄存器事务数据帧: 我正在一个Python3 Jupyter笔记本中处理我的代码。我无法通过排序任何列。通过不同的代码示例进行排序,我在检查df时没有看到输出的重新排序。因此,我将问题简化为仅订购一列: df.sort_values(by='Time') # OR df.sort_values(['Total Due']) # OR df.sort_values(['Time'], ascending=True) 无论

熊猫是新来的,所以也许我错过了一个好主意? 我有一个类似
(500,4)
形状的寄存器事务数据帧:

我正在一个Python3 Jupyter笔记本中处理我的代码。我无法通过排序任何列。通过不同的代码示例进行排序,我在检查df时没有看到输出的重新排序。因此,我将问题简化为仅订购一列:

df.sort_values(by='Time')
# OR
df.sort_values(['Total Due'])
# OR
df.sort_values(['Time'], ascending=True)
无论我使用哪个列标题或哪个布尔参数,显示的结果都不会改变顺序

我认为这可能是Jupyter的事情,我已经使用
print(df)
df.head()
,和
HTML(df.to_HTML())
(最后一个例子是Jupyter笔记本)。我还将整个笔记本从导入CSV重新运行到此代码。而且,我也是Python3的新手(从2.7开始),所以我有时会被它卡住,但我不认为这与本例有什么关系

另一个帖子也有类似的问题。在该实例中,排序是在列类型
string
上进行的。但正如您所看到的,这里的所有列都可以明确地进行排序

为什么我的熊猫数据框不使用排序值显示新订单?

df。排序值(['Total Due'])
返回排序后的df,但不会就地更新df

因此,请明确:

df = df.sort_values(['Total Due'])


仅供参考,我的问题是我没有返回生成的数据帧,因此PyCharm没有费心更新所述数据帧。在return关键字之后命名数据帧修复了该问题

编辑: 我在方法的末尾使用了
return
,而不是
返回df

调试器必须注意到这一点,因为尽管我进行了显式的就地排序,但没有更新
df

IIUC请尝试以下操作:
df=df.sort\u值(['Total Due'])
df.sort\u值(['Total Due'],inplace=True)
@MaxU。你知道吗。我正在为每一个转换创建一个新的数据帧——除了这一个;那很容易。回答这个问题,我会把它标记为已回答--完成。我正在使用PyCharm并面临同样的问题。我尝试在几个不同的步骤中命名dataframe,但无法解决此问题。请详细说明您是如何解决问题的。@r_hudson我添加了一个编辑。谢谢@gherson的解释。然而,我今天浪费了大约2个小时,我的问题仍然没有解决。我沿着轴=1进行排序,并通过列名称指定
by=column\u name
,出于某种原因,dataframe没有排序。令人惊讶的是,昨天它工作得很好。我告诉我的学生让一个小实例工作,然后分而治之:添加~一半不工作的代码,并根据它是否仍然工作,添加或减去代码,直到争用点被隔离,然后调整直到工作。@r_hudson我和你在同一条船上。在我的例子中,问题是虽然我列的值似乎是数字,但它们不是。所以下面的技巧对我很有效:df[“time”]=pd.to_numeric(df[“time”])df.sort_值(by=[“time”],升序=True,原地=True)
df = df.sort_values(['Total Due'])
df.sort_values(['Total Due'], inplace=True)