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

pandas就地应用更新,但不返回任何更新

  •  3
  • muon  · 技术社区  · 7 年前

    我不理解这种应用行为。pandas就地应用更新,但不返回任何更新

    >>>import pandas as pd
    >>>df_test = pd.Series({0: {'A', 'E'},
                         1: {'A', 'C', 'E', 'S'},
                         2: {'A', 'C', 'E'},
                         3: {'A', 'C', 'E', 'S'},
                         4: {'A', 'E'}})
    >>>df_test
    0          {A, E}
    1    {A, S, E, C}
    2       {A, C, E}
    3    {A, S, E, C}
    4          {A, E}
    dtype: object
    
    >>>df_test.apply(lambda x: x.add("X"))
    0    None
    1    None
    2    None
    3    None
    4    None
    dtype: object
    

    但是,

    >>>df_test
    0          {A, X, E}
    1    {A, X, S, E, C}
    2       {A, X, C, E}
    3    {A, X, S, E, C}
    4          {A, X, E}
    dtype: object
    

    所以df_测试被更新了。但如果我这样做:

    >>> df_test = df_test.apply(lambda x: x.add("X"))
    >>> df_test
    0    None
    1    None
    2    None
    3    None
    4    None
    dtype: object
    

    此行为的解释是什么?应用程序正在就地更新数据帧,但返回的类型为“无”。

    2 回复  |  直到 7 年前
        1
  •  3
  •   user3483203    7 年前

    set None apply

    df_test.apply(lambda x: x | {'X'})
    
    0          {A, X, E}
    1    {A, X, E, C, S}
    2       {A, X, E, C}
    3    {A, X, E, C, S}
    4          {A, X, E}
    

    df_test   
    
    0          {A, E}  
    1    {A, E, C, S}  
    2       {A, E, C}  
    3    {A, E, C, S}  
    4          {A, E}  
    
        2
  •  1
  •   ALollz    7 年前

    df_test = df_test.apply(lambda x: x |{"X"})