索引器:Python升级后布尔数组不再匹配
我的代码在for循环中运行 对于循环的每次迭代,我都会找到数据帧中该行的最大值,然后在该值出现的位置创建一个列索引列表(因为它有时可能会出现多次),最后取该列表的max()为包含最大值的行提供最高的列索引 我使用的代码如下所示:索引器:Python升级后布尔数组不再匹配,python,pandas,indexing,Python,Pandas,Indexing,我的代码在for循环中运行 对于循环的每次迭代,我都会找到数据帧中该行的最大值,然后在该值出现的位置创建一个列索引列表(因为它有时可能会出现多次),最后取该列表的max()为包含最大值的行提供最高的列索引 我使用的代码如下所示: index = 0 for i in df['column']: maxValue = df.values[index, :].max() peaklist = df.index[df.values[index, :] == maxValue].toli
index = 0
for i in df['column']:
maxValue = df.values[index, :].max()
peaklist = df.index[df.values[index, :] == maxValue].tolist()
lastpeak = max(peaklist)
index += 1
更新Python之后(我想这就是原因),我的“peaklist”创建现在失败了,索引器说“布尔索引与沿维度0的索引数组不匹配;维度是“x”,但对应的布尔维度是“y”
我在论坛上看过其他类似的例子,似乎找不到一个简单的单行解决方案来重写我的代码,并得到与以前相同的结果。有人能帮忙吗
编辑
数据帧示例:
0 1 2 3 4 5 6 7
a 100 200 200 150 100 125 200
b
c
d
e
对于本例中的第一次迭代,“maxValue”将等于200,创建的“peaklist”将为[2,3,7],而“lastpeak”将等于7。找到了一个解决方案,显然numpy元组方法是有效的:
peaklist = np.where(df.values[index, :] == maxValue)
lastpeak = max(max(peak))
我将把这个问题留待几天,希望有人能找到更好的方法或解释问题的实质。不确定你想要的结果是什么-你能分享一个例子
df
,最好是文本形式,以及预期的结果吗?当然,请参阅更新后的帖子。我缺少的输出是“peaklist”-它只是一个包含列索引的列表,其中的索引用于可以找到该行最大值的列。