我有一个相当大的数据框:
我想创建一个新列,该列为(列中的最大值) - (第二高值) / (第二高值)。
在这个例子中,它看起来像:
我试图创建一个新列,该列为(列中的最大值) - (第二高值) / (第二高值)。
例如df['diff'] = df.loc[:, 'A': 'D'].max(axis=1) - df.iloc[:df.index.get_loc(df.loc[:, 'A': 'D'].idxmax(axis=1))] / ...
但就连公式的这部分也会出错,更不用说包括最后的除法了。我相信肯定有更简便的方法来解决这个问题。
编辑:另外,我还想获得最大值与紧随其前的列之间的差异。我知道这是一个有些不同的问题,但我会感激任何见解。谢谢!
A | B | C | D | |
---|---|---|---|---|
0 | 17 | 36 | 45 | 54 |
1 | 18 | 23 | 17 | 17 |
2 | 74 | 47 | 8 | 46 |
3 | 48 | 38 | 96 | 83 |
在这个例子中,它看起来像:
A | B | C | D | Diff | |
---|---|---|---|---|---|
0 | 17 | 36 | 45 | 54 | .20 |
1 | 18 | 23 | 17 | 17 | .28 |
2 | 74 | 47 | 8 | 46 | .57 |
3 | 48 | 38 | 96 | 83 | .16 |
例如df['diff'] = df.loc[:, 'A': 'D'].max(axis=1) - df.iloc[:df.index.get_loc(df.loc[:, 'A': 'D'].idxmax(axis=1))] / ...
但就连公式的这部分也会出错,更不用说包括最后的除法了。我相信肯定有更简便的方法来解决这个问题。
编辑:另外,我还想获得最大值与紧随其前的列之间的差异。我知道这是一个有些不同的问题,但我会感激任何见解。谢谢!