python - 在 Pandas DataFrame 中创建一列,用于计算大于或小于当前行的所有行

标签 python pandas dataframe countif

我有一个包含球员、薪水和分数的数据帧,并且希望标记薪水高于数据帧中任何其他球员且分数低于数据帧中任何其他球员的条目。

我是一个Python新手,所以我的想法可能还很遥远。

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

最佳答案

我在这里使用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

关于python - 在 Pandas DataFrame 中创建一列,用于计算大于或小于当前行的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427625/

相关文章:

Python - 同一目录中的文件的 IOError : [Errno 2] No such file or directory: u'lastid. py'。在本地工作,不在 Heroku 上

python-3.x - Pandas Series 值包含列表,如何计算唯一值并将其作为字典返回

python - 如何将日期时间中的日期更改为当月的第一天

python - 将相关矩阵转换为 pandas 中的 3 列数据框?

r - 创建一个新的数据框列,该列是其他列的组合

Python提取文件名正则表达式的一部分

python - Jinja 2 中列表的总和元素

r - 将两个函数应用于同一列的不同值

python - 对于直方图,如何保留所有指定的 bin-ticks 沿 x 轴并仅显示指定的 bin-ticks 的数字标签?

python - 读取 pandas 中的所有列作为字符串