首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫数据帧的列中找到最小值和最大值

在熊猫数据帧的列中找到最小值和最大值
EN

Stack Overflow用户
提问于 2022-05-30 14:01:18
回答 2查看 48关注 0票数 1

我确实寻找了一个类似我的问题,但我仍然没有找到任何答案。

我有这样一个数据框架:

代码语言:javascript
复制
          achaea    bacteria    plastids    mitochondrion   viruses
CTAG    -22.141701  -27.891441  -2.474725   0.262533    0.026349
GGCC    -13.403537  -21.490028  -0.403491   -0.271403   -0.243087
GATC    -20.933825  -14.761891  4.681494    -0.098965   0.088650
CATG    -8.490766   -9.910195   1.150736    -0.005730   0.508743
TAAG    -17.376165  -18.653078  -1.525354   -0.708633   -1.917676

我的疑问是:‘我如何才能从列中得到最小值和最大值?’我想要一些这样的值:

最小值:

代码语言:javascript
复制
archaea     CTAG  -22.141701 
bacteria    CTAG  -27.891441   
plastids    CTAG  -2.474725
mitochondrion   TAAG -0.708633
viruses    TAAG    -1.917676

最大值:

代码语言:javascript
复制
archaea     CATG    -8.4907661 
bacteria    CATG    -9.910195   
plastids    GATC  4.681494
mitochondrion   CTAG 0.262533
viruses    CATG    0.508743

我试过:

代码语言:javascript
复制
df.min()
achaea          -22.141701
bacteria        -27.891441
plastids         -4.654833
mitochondrion    -0.881587
viruses          -1.917676
dtype: float64

df['achaea'].idxmin()
'CTAG'

df.reset_index().min()
index                AAAA
achaea           -22.1417
bacteria         -27.8914
plastids         -4.65483
mitochondrion   -0.881587
viruses          -1.91768
dtype: object

嗯,我试过了,而且非常接近:

代码语言:javascript
复制
for col, idx in zip(df.columns, df.index):
    print(df[col].min(), idx, col)

-22.141701229820306 CTAG archaea
-27.89144069672985 GGCC bacteria
-4.654832775512324 GATC plastids
-0.8815871622500514 CATG mitochondrion
-1.917675731085761 TAAG viruses
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-30 14:14:05

一个有趣的选项是agg,它提供了一个函数列表:

代码语言:javascript
复制
result = df.agg([min, max])

关于你的数据样本我得到了:

代码语言:javascript
复制
        achaea   bacteria  plastids  mitochondrion   viruses
min -22.141701 -27.891441 -2.474725      -0.708633 -1.917676
max  -8.490766  -9.910195  4.681494       0.262533  0.508743

但是,如果您希望min/max值为及其索引,那么:

  1. 定义了以下函数:

iMin = col.idxmin() iMax = col.idxmax()返回pd.Series([coliMin,coliMax],index=[col.name,col.name,iMin,iMax])

  1. 连接每一列的结果:

结果= pd.concat([ xx(dfcol) in df ])

结果是:

代码语言:javascript
复制
achaea         CTAG   -22.141701
               CATG    -8.490766
bacteria       CTAG   -27.891441
               CATG    -9.910195
plastids       CTAG    -2.474725
               GATC     4.681494
mitochondrion  TAAG    -0.708633
               CTAG     0.262533
viruses        TAAG    -1.917676
               CATG     0.508743
dtype: float64

第一个索引级别显示列名。

第二级为本专栏中最小/最大值的指标值。

票数 2
EN

Stack Overflow用户

发布于 2022-05-30 14:12:18

您可以使用:

代码语言:javascript
复制
df.where(df.eq(df.min())).T.stack()

  • 标识的列值等于每列的min值(
  • 掩蔽其他值
  • 堆栈),同时删除NaNs (先转置以更改顺序或索引)

产出:

代码语言:javascript
复制
achaea         CTAG   -22.141701
bacteria       CTAG   -27.891441
plastids       CTAG    -2.474725
mitochondrion  TAAG    -0.708633
viruses        TAAG    -1.917676
dtype: float64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72435601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档