崇高3与jupyter的输出之间的差异

时间:2017-10-05 15:14:54

标签: python sublimetext3

我对sublime文本的输出有问题。当我运行时:

[

我得到了这个结果:

import pandas as pd
import numpy as np


df = pd.DataFrame()
df['name'] = ['John', 'Steve', 'Sarah']
df.assign (age =[30,31,32])
print (df) 

我认为这是一个错误,因为我应该可以看到年龄栏。

当我在jupyter中运行此代码时,我获得了:

        name
    0   John
    1  Steve
    2  Sarah

有人知道它发生了什么吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这远非错误或翻译不匹配

当您致电df.assign(age =[30,31,32])时,您正在复制df并附加一列age。在REPL-like编辑器中完成此操作后,您会看到已呈现的输出。但在大多数文本编辑器中,这不会显示,因为您没有打印输出。您正在使用__repr__对象的DataFrame方法。除非文本编辑器实现了渲染__repr__输出的方法,否则您将永远不会看到df.assign(age =[30,31,32])的输出。

现在,jupyter具有REPL功能,因此会根据输出的__repr__方法显示命令,而无需调用print功能。因此,jupyter将显示df.assign(age =[30,31,32])的输出。

底线仍然是您没有更改数据框。如果代码编写如下,则sublime和jupyter都会打印结果:

import pandas as pd
import numpy as np


df = pd.DataFrame()
df['name'] = ['John', 'Steve', 'Sarah']
df = df.assign(age=[30,31,32])
print(df)

我希望这会有所帮助。

答案 1 :(得分:0)

assign()数据框返回一个新对象(副本),除了新列之外还包含所有原始列 - 请参阅pandas.DataFrame.assign

所以你必须指定它来获得它的返回值:

df = df.assign (age =[30,31,32])