gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:47:38 25 4
gpt4 key购买 nike

我可以使用 .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

但是如何使用相同的方法创建多于一行?
>>> df.loc[[4, 5], 'a'] = [40, 50]
...
KeyError: '[4 5] not in index'

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

所需输入:
>>> df.loc[[4, 5], 'a'] = [40, 50]

期望输出
      a      b
1 10.0 100.0
2 20.0 200.0
3 30.0 NaN
4 40.0 NaN
5 50.0 NaN

其中最后 2 行是新添加的。

最佳答案

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

重新创建数据后,基本上分为两步:

  • 重新创建数据:
    import pandas as pd
    df = pd.DataFrame({'a':[10, 20], 'b':[100,200]}, index='1 2'.split())
    df.loc[3, 'a'] = 30
  • 扩展 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)
  • 使用 .loc 设置值:
    df.loc[new_rows, "a"] = [40, 50]

    给你
    >>> 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
  • 关于Pandas 数据框通过 .loc 一次创建多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038152/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com