我对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
有人知道它发生了什么吗?
感谢您的帮助
答案 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])