如何创建包含每行倒数第二个值的列?

我有一个 DataFrame,我需要创建一个新列,其中包含原始 DataFrame 中每一行的第二大值。


样本:


 df = pd.DataFrame(np.random.randint(1,100, 80).reshape(8, -1))

期望的输出:


 0   1   2   3   4   5   6   7   8   9  penultimate

0  52  69  62   7  20  69  38  10  57  17           62

1  52  94  49  63   1  90  14  76  20  84           90

2  78  37  58   7  27  41  27  26  48  51           58

3   6  39  99  36  62  90  47  25  60  84           90

4  37  36  91  93  76  69  86  95  69   6           93

5   5  54  73  61  22  29  99  27  46  24           73

6  71  65  45   9  63  46   4  93  36  18           71

7  85   7  76  46  65  97  64  52  28  80           85

如何用尽可能少的代码完成这项工作?


猛跑小猪
浏览 81回答 2
2回答

不负相思意

你可以使用NumPy这个:import numpy as npdf = pd.DataFrame(np.random.randint(1,100, 80).reshape(8, -1))df['penultimate'] = np.sort(df.values, 1)[:, -2]print(df)使用NumPy更快。

慕的地10843

这是一个简单的 lambda 函数!# Inputdf = pd.DataFrame(np.random.randint(1,100, 80).reshape(8, -1))# Outputout = df.apply(lambda x: x.sort_values().unique()[-2], axis=1)df['penultimate'] = outprint(df)干杯!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python