python-3.x - 将多个条件与数据框 filter() 函数一起使用
问题描述
我正在尝试做这样的事情-
df.groupby('brand').filter(lambda group: (len(group) >= 10) | (group.brand == "ABC") )
将数据框过滤到按 分组时出现 10 次或更多次brand
的记录,或者如果记录brand
属性与一个特定值匹配,我也想保留这些记录。
似乎我还有很长的路要走,也许filter
不能采取多个标准。
解决方案
(group.brand == "ABC").all()
当您希望所有值相等时用作条件。否则,在布尔上下文中,引发group['brand']
"ABC"
bool(group.brand == "ABC")
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
例如,
import numpy as np
import pandas as pd
np.random.seed(2019)
N = 10
df = pd.DataFrame({'brand':np.random.choice(['ABC', 'DEF', 'GHI'], size=N),
'val':np.random.randint(4, size=N)})
result = df.groupby('brand').filter(lambda group: (len(group) >= 3)
| (group['brand'] == "ABC").all())
print(result)
产量
brand val
0 ABC 0
1 GHI 0
3 ABC 0
4 GHI 1
5 GHI 3
6 ABC 0
8 ABC 2
9 GHI 3
推荐阅读
- windbg - 在 WinDBG 中只重新加载一个符号
- c# - C# Bitmap.Save() 执行但未创建文件
- webrtc - RTCIceConnectionState.count 什么时候被解雇
- swift - SwiftUI 为什么会自动将变量传递给其他视图?
- xcode - 您可以更改 Xcode swiftui 预览默认值吗?
- r - tab_model() :呈现标准化系数,但保留原始(非标准化)系数的 p 值(星号)
- python - backtest.py BokehDeprecationWarning
- html - 获取类元素的索引
- r - 使用多个变量过滤两次并计算行数
- sql - 如何使用 case 语句计算状态