Pandas数据帧通过.loc一次创建多个行

Zha*_*g18 7 append loc dataframe pandas

我可以使用.loc()以下方法在数据框中创建新行:

>>> df = pd.DataFrame({'a':[10, 20], 'b':[100,200]}, index='1 2'.split())
>>> df
    a    b
1  10  100
2  20  200
>>> df.loc[3, 'a'] = 30
>>> df
      a      b
1  10.0  100.0
2  20.0  200.0
3  30.0    NaN
Run Code Online (Sandbox Code Playgroud)

但是如何使用相同的方法创建多个行?

>>> df.loc[[4, 5], 'a'] = [40, 50]
...
KeyError: '[4 5] not in index'
Run Code Online (Sandbox Code Playgroud)

我熟悉.append(),但我正在寻找一种方法,不需要在附加到系列之前将新行构造到系列中df.

期望的输入:

>>> df.loc[[4, 5], 'a'] = [40, 50]
Run Code Online (Sandbox Code Playgroud)

期望的输出

      a      b
1  10.0  100.0
2  20.0  200.0
3  30.0    NaN
4  40.0    NaN
5  50.0    NaN
Run Code Online (Sandbox Code Playgroud)

最后添加2行的位置.

api*_*sch 6

诚然,这是一个很晚的答案,但我不得不处理类似的问题,并且认为我的解决方案也可能对其他人有帮助。

重新创建数据后,基本上是一个两步方法:

  1. 重新创建数据:

    import pandas as pd
    df = pd.DataFrame({'a':[10, 20], 'b':[100,200]}, index='1 2'.split())
    df.loc[3, 'a'] = 30
    
    Run Code Online (Sandbox Code Playgroud)
  2. 扩展df.index使用.reindex

    idx = list(df.index)
    new_rows = list(map(str, range(4, 6)))  # easier extensible than new_rows = ["4", "5"]
    idx.extend(new_rows)
    df = df.reindex(index=idx)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用以下命令设置值.loc

    df.loc[new_rows, "a"] = [40, 50]
    
    Run Code Online (Sandbox Code Playgroud)

    给你

    >>> df
          a      b
    1  10.0  100.0
    2  20.0  200.0
    3  30.0    NaN
    4  40.0    NaN
    5  50.0    NaN
    
    Run Code Online (Sandbox Code Playgroud)

  • 那么,有没有办法一劳永逸呢? (2认同)