我有一个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 举报,一经查实,本站将立刻删除。