- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个 pandas 多索引列数据框
数据框 1(最小值):
| A | B | C |
| Min | Min | Min |
|-------|-------|------|
0 | 26.47 | 17.31 | 1.26 |
1 | 27.23 | 14.38 | 1.36 |
2 | 27.23 | 18.88 | 1.28 |
dataframe 2(用于比较的值)
第 0 行、第 1 行和第 2 行相同,我将数据帧扩展为三行,以便与最小和最大数据帧进行比较。每个数据框单元格中的值是 ndarray
| A | B | C |
| Val | Val | Val |
|---------------------|-----------------------|--------------------|
0 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
1 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
2 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
数据框 3(最大值):
| A | B | C |
| Max | Max | Max |
|-------|-------|------|
0 | 28.68 | 18.42 | 1.37 |
1 | 29.50 | 17.31 | 1.47 |
2 | 29.87 | 20.45 | 1.39 |
预期结果:
| A | B | C |
| Result | Result | Result |
|---------------------|-----------------------|----------------------|
0 | [True, True, False] | [True, True, False] | [True, True, True] |
1 | [True, True, True] | [True, False, False] | [True, False, False] |
2 | [True, True, True] | [False, False, False] | [True, True, False] |
我想以这种方式执行元素明智的比较:
min <= each element in ndarray <= max
即
for row 0:
26.47 <= [27.58,28.37,28.73] <= 28.68
17.31 <= [17.31, 18.42, 18.72] <= 18.42
1.26 <= [1.36, 1.28, 1.27] <= 1.37
等等
我试过了 ( datafram2 >= dataframe3 ) & ( datafram2 <= datafram3 )
但不起作用。
计算结果的最简单和最快的方法是什么?
示例数据框代码:
min_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Min' ] ] )
val_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Val' ] ] )
max_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Max' ] ] )
min_df = pd.DataFrame( [ [ 26.47, 17.31, 1.26 ], [ 27.23, 14.38, 1.36 ], [ 27.23, 18.88, 1.28 ] ], columns=min_columns )
val_df = pd.DataFrame( [ [ [ 27.58, 28.37, 28.73 ], [ 17.31, 18.42, 18.72], [1.36, 1.28, 1.27 ] ] ] , columns=val_columns )
max_df = pd.DataFrame( [ [ 28.68, 18.42, 1.37 ], [ 29.50, 17.31, 1.47 ], [ 29.87, 20.45, 1.39 ] ] , columns=max_columns )
最佳答案
只需将列值转换为 NumPy 数组。并将其简单地视为数组比较问题(按行)。
你可以使用apply
:
def bool_check(row):
col = row.name[0]
min_val = df1[pd.IndexSlice[col]].to_numpy()
max_val = df3[pd.IndexSlice[col]].to_numpy()
x = np.array(row.tolist())
return list((x >= min_val) & (x <= max_val))
res = df2.apply(bool_check,axis=0).rename(columns={'Val':'Result'})
资源:
(基于您提供的数据的完整解决方案):
def bool_check(row):
col = row.name[0]
min_val = min_df[pd.IndexSlice[col]].to_numpy()
max_val = max_df[pd.IndexSlice[col]].to_numpy()
x = np.array(row.tolist())
return list((x >= min_val) & (x <= max_val))
res = val_df.apply(bool_check,axis=0).rename(columns={'Val':'Result'})
方法一(Nk03的method1):
CPU times: user 19.5 ms, sys: 0 ns, total: 19.5 ms Wall time: 18.9 ms
方法二(Nk03的method2):
CPU times: user 23 ms, sys: 102 µs, total: 23.1 ms Wall time: 21.9 ms
方法 3(使用基于 numpy 的比较):
CPU times: user 8.76 ms, sys: 26 µs, total: 8.79 ms Wall time: 8.91 ms
Nk03更新优化方案:
CPU times: user 16 ms, sys: 0 ns, total: 16 ms Wall time: 15.5 ms
关于python - Pandas 数据框列值与列表中的元素明智数字比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67856992/
我有一个包含 1+N 个线程和 N 个 FIFO 队列的程序,例如:FIFO_queue_t* fifo_queque[N]。一个线程负责填充这 N 个 FIFO 队列。并且其他每个线程都与 1 个
我正在使用 Wise Installer Editor 编写 .msi,并且我想将所有文件复制到注册表项中指定的目录中。 我如何在 Wise 中指定这一点? 提前致谢, 埃内斯托 最佳答案 您可以尝试
我们有一个场景,其中我们尝试获取附加的磁盘虚拟机以及分配给这些磁盘的相应总空间。是否有任何命令或脚本可以获取详细信息? 我已使用命令 Get-AzureDisk 获取输出,但它没有显示列表中的所有虚拟
我有一个包含多个派生类的类,每个派生类都有自己的构造函数。 class A { public: static A *create_new_A(int child_ID);
我有一个小问题:) 我计划建立一个相当不寻常的 web 项目,大约有 1000 个页面,其中不会有经典的导航(仅适用于关于页面和联系人),并且所有页面都不会链接到一个又一个。 它的索引 > 打开随机页
我们的应用程序中有一些数据。有时它会被保存,所以我们为它做了一个实体和一个 NSManagedObject 子类。但是,通常情况下,对象将被实例化并且永远不会保存。我正在考虑使用另一个具有 NSInM
假设我有一个表如下: Class | Subject | Student | Marks ---------------------------------------- 1
刚刚在我正在编写的一些代码中偶然发现了这种情况,并且很好奇“正确”的方法是什么。举例来说,我有一大堆对象,我需要按某个属性对其进行分组,但组的顺序很重要。 例如。对象: var obj = {
如何在 Android 应用 Activity 中启用 Mutli 窗口选项? 我尝试在两个单独的 Activity 中使用 AndroidManifest Activity 属性 android:r
我发现 ear 插件覆盖了 war 插件并阻止调用 war 任务。我通过直接调用它来绕过它。 这是远程明智的还是我应该放弃并转向 eclipse 和 gradle 中的多项目设置? ear {
我们的安装程序是用 Inno Setup 编写的,我们实际上对它非常满意。然而,一些客户不断要求他们可以更轻松地通过 Active Directory 分发 MSI 安装程序。通过扩展 Inno Se
我正在尝试使用 Visual Studio 2017 (v15.4.5) 将现有的 WCF Web API(针对 .NET Framework 4.6.1)移植到 ASP.Net Core 2,但在找
我是一名优秀的程序员,十分优秀!