Pandas查找Series中5的倍数位置时长度不匹配报错如何解决
Pandas查找Series中5的倍数位置的错误修复
错误原因
触发报错的核心原因是np.argwhere()接收Pandas布尔序列后,返回的是形状为(n,1)的二维Numpy数组,如果后续将该结果直接赋值给长度为9的Series结构,就会触发长度不匹配的报错;同时该返回结构也不符合我们需要的一维索引列表的使用需求。
修复方案
推荐两种可直接运行的正确实现:
- 方案1:使用Pandas原生方法(适配Series结构,性能更优)
import pandas as pd import numpy as np num_series = pd.Series(np.random.randint(1, 10, 9)) print("Original Series:") print(num_series) # 筛选满足条件的元素后直接取索引 result = num_series[num_series % 5 == 0].index print("Positions of numbers that are multiples of 5:") print(result.tolist())
- 方案2:保留Numpy写法的修复版本
import pandas as pd import numpy as np num_series = pd.Series(np.random.randint(1, 10, 9)) print("Original Series:") print(num_series) # 布尔序列转Numpy数组后传入argwhere,再拍平二维结果为一维 result = np.argwhere((num_series % 5 == 0).values).flatten() print("Positions of numbers that are multiples of 5:") print(result)
两种方案均可正确输出符合要求的索引位置,不会触发长度不匹配报错。
内容的提问来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

