微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-DataFrame的最大值和第二最大值之间的差异

我有一个DataFrame,我希望将DataFrame的最大值和第二最大值之间的差作为新列附加到DataFrame作为输出.

例如,数据框如下所示(这是一个巨大的DataFrame):

 gene_id    Time_1  Time_2  Time_3
a   0.01489251  8.00246 8.164309
b   6.67943235  0.8832114   1.048761

到目前为止,我尝试了以下方法,但只是采用标题,

largest = max(df)
second_largest = max(item for item in df if item < largest)

并单独返回标头值.

解决方法:

您可以定义一个函数,该函数接受这些值,对其进行排序,对前两个值进行切片([:2]),然后计算差值并返回第二个值(因为第一个值为NaN).您可以应用此参数并传递arg axis = 1以逐行应用:

In [195]:
def func(x):
    return -x.sort(inplace=False, ascending=False)[:2].diff()[1]

df['diff'] = df.loc[:,'Time_1':].apply(func, axis=1)
df

Out[195]:
  gene_id    Time_1    Time_2    Time_3      diff
0       a  0.014893  8.002460  8.164309  0.161849
1       b  6.679432  0.883211  1.048761  5.630671

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐