使用相对索引访问DataFrame数据

时间:2018-07-12 20:52:44

标签: python pandas

我正在尝试使用有关行的信息来通知整个DataFrame中要查看的其他数据。

我有一个这样的DataFrame:

df = pd.DataFrame({'a':[1,5,9],'b':[2,6,3],'c':[0,7,1]})

   a  b  c
0  1  2  0
1  5  6  7
2  9  3  1

我想问类似的东西:
下一行索引位置的值是每一行中的最大值。

结果可能看起来像这样:

   a  b  c data
0  1  2  0    6
1  5  6  7    1
2  9  3  1  NaN

索引0处的最大数字为2,并且在下一个索引位置的同一列中找到6

索引1处的最大数字为7,并且在下一个索引位置的同一列中找到1

索引2之后没有数据,因此没有返回任何内容。

1 个答案:

答案 0 :(得分:3)

使用.idxmax查找每一行的最大值的列,然后使用df.lookup查找同一列中下一行的值。

import pandas as pd

# Ignore the last row
lookups = df.idxmax(axis=1)[:-1]
#0    b
#1    c
#dtype: object

df['data'] = pd.Series(df.lookup(lookups.index+1, lookups))
#   a  b  c  data
#0  1  2  0   6.0
#1  5  6  7   1.0
#2  9  3  1   NaN