我正在尝试使用有关行的信息来通知整个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
之后没有数据,因此没有返回任何内容。
答案 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