单一位置索引器越界

时间:2021-02-05 11:41:03

标签: python pandas

我有以下代码:

stats_list = ['GP', 'RECs', 'REC Yds', 'REC TDs', 'MS RECs', 'MS REC Yards', 'MS REC TDs', 'DOM']

for column in stats_list:
    mask = TE_df.columns.str.startswith(column)
    TE_df[f'{column} Last'] = TE_df.loc[:, mask].ffill(axis=1).iloc[:, -1]

这是从另一段代码中直接复制粘贴的(只是更改了 df 的名称)。在其他代码上,这没有问题,但在此代码上,它不断带回错误“单个位置索引器超出范围(将其与最后一行相关联)”。

我认为这与代码的 'iloc[:, -1]' 部分有关,但我不知道为什么。我的理解是,这应该只是在 df 的末尾添加一列,这是指定列的填充。这里的所有其他问题似乎都有问题的根本原因是代码正在调用一个我理解的不存在的列(一个正数作为索引器),但我不明白 - 1 个数字可以视为超出范围。

1 个答案:

答案 0 :(得分:0)

我认为问题是没有匹配列,所以 TE_df.loc[:, mask] 返回空的 DataFrame,所以 iloc[:, -1] 失败了。

测试是否有 2 个或更多 True 的值(这意味着匹配 2 个或更多列),然后才运行代码:

for column in stats_list:
    mask = TE_df.columns.str.startswith(column)
    if mask.sum() > 1:
        TE_df[f'{column} Last'] = TE_df.loc[:, mask].ffill(axis=1).iloc[:, -1]