代码之家  ›  专栏  ›  技术社区  ›  ozo

sublime 3与jupyter的输出差异

  •  3
  • ozo  · 技术社区  · 8 年前

    我对崇高文本的输出有问题。当我运行此命令时:

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

            name
        0   John
        1  Steve
        2  Sarah
    

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

        name    age
    0   John    30
    1   Steve   31
    2   Sarah   32
    

    2 回复  |  直到 8 年前
        1
  •  2
  •   Abdou    8 年前

    这远非错误或解释器不匹配 .

    当你打电话的时候 df.assign(age =[30,31,32]) df 带有附加列 age . 当这在一个 REPL-like 编辑器中,可以看到渲染的输出。但在大多数文本编辑器中,这不会显示,因为您没有打印输出。您正在使用 __repr__ DataFrame 对象除非文本编辑器实现了一种渲染方法 __报告__ 输出,您将永远看不到 .

    现在 jupyter 另一方面,具有 REPL 特性,因此将根据输出的 方法,而无需调用 print 朱皮特 df。分配(年龄=[30,31,32])

    底线仍然是,您没有在适当的位置更改数据帧。崇高和

    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)
    

    我希望这有帮助。

        2
  •  0
  •   MarianD    8 年前

    这个 assign() 退货 一个新对象(副本),包含除新列之外的所有原始列-请参阅 pandas.DataFrame.assign

    因此,您必须分配它以获取其返回值:

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