Создайте столбец в кадре данных Pandas, в котором все строки будут больше или меньше текущей строки - PullRequest
1 голос
/ 30 марта 2019

У меня есть DataFrame, который включает в себя Player, Salary и Score, и я хочу пометить записи, где Salary выше, а Score ниже, чем все другие игроки в DataFrame.

Я новичок в питонетак что я, вероятно, не совсем понимаю, как я об этом думаю.

import pandas as pd


df = pd.DataFrame([['A',12000,100],['B',13000,110],['C',13300,105],['D',12500,102],['E',11800,101]],columns=['Player','Salary','Score'])

df['OverPriced']= (df['Score'].iloc[:]>df['Score'] & df['Salary'].iloc[:]<df['Salary']).count()

Print(df)

Я хотел бы увидеть что-то вроде следующего:

    Player  Salary  Score   Overpriced
0   A       12000     100         1
1   B       13000     110         0
2   C       13300     105         1
3   D       12500     102         0
4   E       11800     101         0

1 Ответ

1 голос
/ 30 марта 2019

Я использую numpy трансляцию здесь, и с any

import numpy as np
s1=df.Salary.values
s2=df.Score.values
df['Overpriced']=np.any((s1>s1[:,None])&(s2<s2[:,None]),0).astype(int)
df
Out[377]: 
  Player  Salary  Score  Overpriced
0      A   12000    100           1
1      B   13000    110           0
2      C   13300    105           1
3      D   12500    102           0
4      E   11800    101           0
...