【发布时间】:2021-07-13 15:53:22
【问题描述】:
我的代码在 for 循环中运行。
对于循环的每次迭代,我都会找到我的 DataFrame 的那一行的最大值,然后创建一个列索引列表,其中出现该值(因为它有时可能会出现多次),最后我取 max( ) 以给出包含最大值的行的最高列索引。
我使用的代码如下所示:
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 后(我认为这就是原因),我的“峰值列表”创建现在失败,并出现 IndexError 说“布尔索引与维度 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。
【问题讨论】:
-
不确定你想要的输出是什么 - 你能分享一个例子
df,最好是文本,以及预期的输出? -
当然,请参阅更新后的帖子。我缺少的输出是“peaklist” - 它只是一个包含列索引的列表,其中索引是可以找到该行最大值的列。