Pandas DataFrame在B列中提取与A列中的Max相关的值

问题描述 投票:2回答:1

这里有相对较新的Python脚本编写器,其中包含有关Pandas和DataFrames的快速问题。在Python中可能有一种更简单的方法来做我正在做的事情(在Pandas之外),所以我对所有建议持开放态度。

我有一个大型数据集(不是我们所有人),拥有数十个属性和数万个条目。我已成功打开它(.csv文件)并删除了练习中不必要的列,以及我从其他问题中学到的使用过的pandas技术,以便将表格放在桌子上以便我可以使用

作为一个例子,我现在有数据帧df,有三列--A,B和C.我需要找到A的最大值索引,然后在该索引处拉出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

python pandas dataframe
1个回答
0
投票
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

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

© www.soinside.com 2019 - 2024. All rights reserved.