检索一列中的值,该列对应于另一列中的最大值

2024-05-08 20:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

相对较新的Python脚本,这里有一个关于Pandas和DataFrames的快速问题。在Python中可能有一个更简单的方法来完成我正在做的事情(在Pandas之外),所以我愿意接受任何和所有的建议。你知道吗

我有一个很大的数据集(不是我们所有人),有几十个属性和数以万计的条目。我已经成功地打开了它(.csv文件),删除了练习中不必要的列,还使用了从其他问题中学到的技巧,在表格中找到了我可以使用的东西

例如,我现在有dataframedf,有三列-A、B和C。我需要找到A的max的索引,然后在该索引处提取B和C的值。根据对最佳方法的研究,似乎idxmax是最佳选择。你知道吗

MaxIDX = df['A'].idxmax()

这给了我正确的答案,但是当我尝试使用基于这个变量的at获取一个值时,我得到了错误。我相信这是因为idxmax产生一个序列,而不是整数输出。你知道吗

variable = df.at[MaxIDX, 'B']

所以我的问题有两部分。你知道吗

如何将序列转换为at的正确输入?还有,有没有一种更简单的方法让我完全不知道呢?我所要做的就是得到A列最大值的索引,然后在索引处提取B列和C列的值。你知道吗

感谢您的帮助。非常感谢!干杯!你知道吗

注: 使用:Python 3.6.4和Pandas 0.22.0


Tags: 数据方法脚本pandasdf属性条目序列
1条回答
网友
1楼 · 发布于 2024-05-08 20:27:53
np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))

df

          A         B         C
0  1.764052  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274
4  0.761038  0.121675  0.443863


df.A.idxmax()
1

你所说的失败似乎对我有用:

df.at[df.A.idxmax(), 'B']
1.8675579901499675

不过,根据您的解释,您可能想要loc,而不是at

df.loc[df.A.idxmax(), ['B', 'C']]

B    1.867558
C   -0.977278
Name: 1, dtype: float64

注意:您可能需要检查索引是否包含重复的条目。这是失败的一个可能原因。

相关问题 更多 >