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

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...