当前位置: 首页 > 知识库问答 >
问题:

带有lambda函数的Pandas.filter()方法[duplicate]

燕飞文
2023-03-14

我正在尝试理解Pandas中的.filter()方法。我不确定为什么下面的代码不起作用:

# Load data
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)

# Set arbitrary index (is this needed?) and try filtering:
indexed_df = df.copy().set_index('sepal width (cm)')
test = indexed_df.filter(lambda x: x['petal length (cm)'] > 1.4)

我得到:

TypeError: 'function' object is not iterable
 filtered_df = df.groupby('petal width (cm)').filter(lambda x: x['sepal width (cm)'].sum() > 50)

共有1个答案

颛孙品
2023-03-14

您可以使用条件indexed_df['花瓣长度(cm)]>1.4(这里我们使用indexed_df,而不是x)作为筛选数据帧的方法,因此:

indexed_df[indexed_df['petal length (cm)'] > 1.4]

这是怎么工作的?

如果执行indexed_df['petal length cm'],您将获得DataFrame的“column”:某种序列,对于每个索引,我们将获得该列的值。通过执行column>1.4,我们获得某种布尔列:如果某一行满足条件,则为true,否则为false

然后,我们可以使用这样的布尔列作为dataframeindexed_df[boolean_column]的元素,以仅获取boolean_column的对应行为true的行。

 类似资料:
  • 我刚开始研究Java8Lambda特性。我用Java 7编写了这段代码,并尝试在lamdas中执行它的等效代码。请注意,最后一行产生编译错误,因为重载函数不明确。我明白原因。我怎样才能用lambdas解决这种模糊性?

  • 我正在学习新Java8中的lambdas。有一件事很有趣。如果方法具有与函数接口相同的签名,则可以使用lambdas API将其分配给方法。例如。 这个方法(integer.compare)是静态的,取两个值,一切都很完美。签名与接口方法比较中的签名相同。但这可以用非静态方法来实现,例如 这个方法是非静态的(实例级别),而且它只需要一个值。正如我所理解的,在Java中没有非静态方法,每个方法都是静

  • 问题内容: 这三种方法(都用于将一个数组转换为另一个数组)之间的性能差异(如果有)是什么? 使用 使用和λ/关闭功能 使用带有“静态”函数/方法 还有其他方法吗? 为了使自己清楚,让我们看一下这些示例,它们都做同样的事情-将数字数组乘以10: 佛瑞奇 带有lambda的地图 具有“静态”功能的地图,作为字符串引用传递 还有其他方法吗?我将很高兴听到上面案例之间的 所有 实际差异,以及为什么要使用一

  • null 还有其他办法吗?我将很高兴听到实际所有的差异之间的情况从上面,以及任何输入为什么应该使用一个而不是其他。

  • 问题内容: 在寻找的源代码中,我看到了以下功能: 该语法在哪里记录?我的意思是功能的前面。这与声明一个常规数组相同,在该常规数组中括号可以位于数组名称之后或之前,但是在这种情况下,括号可以位于函数名称之后? VS 编辑:2018-05-22 我在这里发现了这种疯狂语法的更多用法:关于Java的十件事 #3是他们提到可以利用上述语法的所有方式的地方 问题答案: 在JLS第8.4节中: … 返回数组的

  • 下面的代码有问题吗? 但是我担心这样做可能不标准和/或危险。 编辑:为什么要初始化为<code>字符</code>数组?如果块足够大,可以从堆中分配大小为<code>sizeof(buffer_type) void*运算符新(std::size_t size); 效果:new-表达式(5.3.4)调用的分配函数(3.7.4.1),用于分配适当对齐的存储大小字节以表示该大小的任何对象。 我想如果我从