simple accumulation but keyerror : 0

simple accumulation but keyerror : 0

我有数据集。我想将我的数据保存在 df2 中。

RegionNo Internet
1 1
1 2
1 3
1 4
2 1
2 2
2 3

预期:

RegionNo Internet
1 10
2 6
def accu():
    k = 0
    for i in range(len(df) - 1):
        if df.loc[i, "RegionNo"] == df.loc[i + 1, "RegionNo"]:
            df2.loc[k, "Internet"] = df2.loc[k, "Internet"] + df.loc[i, "Internet"]
            df2.loc[k, "RegionNo"] = df.loc[i, "RegionNo"]

        else:
            k = k + 1
            df2.loc[k, "RegionNo"] = df.loc[i + 1, "RegionNo"]
            df2.loc[k, "Internet"] = df2.loc[k, "Internet"] + df.loc[i, "Internet"]

但每次我尝试我的代码时,都会出现 keyError: 键盘错误:0

File "C:/Users/Monet/PycharmProjects/pythonProject1/new_main.py", line 9, in accu
    df2.loc[k, "Internet"] = df2.loc[k, "Internet"] + df.loc[i, "Internet"]
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 925, in __getitem__
    return self._getitem_tuple(key)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1100, in _getitem_tuple
    return self._getitem_lowerdim(tup)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 838, in _getitem_lowerdim
    section = self._getitem_axis(key, axis=i)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1164, in _getitem_axis
    return self._get_label(key, axis=axis)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1113, in _get_label
    return self.obj.xs(label, axis=axis)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3776, in xs
    loc = index.get_loc(key)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
    raise KeyError(key) from err
KeyError: 0

你想要:

print(df.groupby('RegionNo').sum())

例如:

from pandas import DataFrame

data = [
    {'RegionNo': 1, 'Internet': 1},
    {'RegionNo': 1, 'Internet': 2},
    {'RegionNo': 1, 'Internet': 3},
    {'RegionNo': 1, 'Internet': 4},
    {'RegionNo': 2, 'Internet': 1},
    {'RegionNo': 2, 'Internet': 2},
    {'RegionNo': 2, 'Internet': 3}
]

df = DataFrame(data)
df2 = df.groupby('RegionNo').sum()
print(df2)

结果:

        Internet
RegionNo
1             10
2              6

您尚未分享您的创建方式 df2,但它可能没有您尝试访问的位置,这会导致您询问的错误。 (顺便说一下,如果你真的在问题文本的解释末尾提出一个明确的问题,这会有所帮助,这样人们就不必把它拖出来)。正如上面的代码所示,您也不需要那样访问 df2