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

在pandas数据帧中插入一行

  •  1
  • Bogaso  · 技术社区  · 2 年前

    我有下面的熊猫数据帧

    import pandas as pd
    dat = pd.DataFrame({'A': [1,2,3,5], 'B': [7,6,7,8]})
    

    现在我有一个清单

    List = [99, 88]
    

    我想在第2行插入这份清单。

    有什么方法可以实现这一点吗?我发现有一个方法叫 insert ,但这只是在指定的位置插入列。

    1 回复  |  直到 2 年前
        1
  •  2
  •   mozway    2 年前

    你可以使用 iloc concat :

    N = 2
    
    List = [99, 88]
    
    out = pd.concat([dat.iloc[:N],
                     pd.DataFrame([List], columns=dat.columns),
                     dat.iloc[N:]], ignore_index=True)
    

    或者,如果您有一个(排序的)范围索引,您可以在所需位置(例如1.5)之前插入一个索引,然后 sort_index :

    N = 2
    dat.loc[N-0.5] = List
    dat.sort_index(inplace=True, ignore_index=True)
    

    输出

        A   B
    0   1   7
    1   2   6
    2  99  88
    3   3   7
    4   5   8
    

    如果要替换现有数据,只需指定:

    dat.loc[2] = List
    

    输出

        A   B
    0   1   7
    1   2   6
    2  99  88
    3   5   8
    

    要在中执行此操作 pipe 您可能应该使用自定义函数:

    def assign_chain(df, pos, obj):
        df = df.copy()
        df.loc[pos] = obj
        return df
    
    out = (pd.DataFrame({'A' : [1,2,3,5], 'B' : [7,6,7,8]})
             .pipe(assign_chain, 2, List)
          )