python - 如果至少有一个值低于阈值,则选择给定 2 列的行

标签 python pandas select

我有一个 Pandas 数据框

NAME    VALUE
  A        2 
  A        1 
  B        4 
  A        3 
  C        2 
  B        8 

如果“名称”列中的值在 3 以下的“值”中至少包含一个与名称相对应的值,我想添加一列,这样:

NAME    VALUE   BELOW_THRESHOLD
  A        2          Y 
  A        4          Y 
  B        4          N 
  A        3          Y 
  C        2          Y 
  B        8          N 

最佳答案

您可以在 NAME 上使用 groupby应用 lambda 来测试您的条件并获取 max 值这将是 True 如果任何满足条件并使用 map 分配:

In [317]:
df['BELOW_THRESHOLD'] = df['NAME'].map(df.groupby('NAME')['VALUE'].apply(lambda x: (x < 3).max()))
df

Out[317]:
  NAME  VALUE BELOW_THRESHOLD
0    A      2            True
1    A      1            True
2    B      4           False
3    A      3            True
4    C      2            True
5    B      8           False

在使用np.where后可以转换为YN:

In [318]:
df['BELOW_THRESHOLD'] = np.where(df['BELOW_THRESHOLD'], 'Y','N')
df

Out[318]:
  NAME  VALUE BELOW_THRESHOLD
0    A      2               Y
1    A      1               Y
2    B      4               N
3    A      3               Y
4    C      2               Y
5    B      8               N

关于python - 如果至少有一个值低于阈值,则选择给定 2 列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125815/

相关文章:

python - 如何使用 apply 将 pandas 数据框列拆分为多个?

javascript - 我在 Flask 应用程序中使用 $.(get) 请求时遇到的 JavaScript 问题

python - 两个文件的区别

python用逗号将文本分隔到不同的列中

python - PANDAS - 循环两个不同大小的日期时间索引来比较日期和值

MYSQL 根据特定列选择多列

php - 获取具有相同行 ID 的列值

python - CSS 不适用于 Django 支持的网站

python - 如何加入两个 Pandas 数据框中的单元格值?

php - 我可以在 mysql select 中放入一个数组吗?