Pandas:通过将函数应用于另一列的值过滤一列?
Pandas: Filter a column by the value from applying a function to another column?
假设我有一个包含 2 列 A 和 B 的 df 和一个 class Foo() ,它可以由 A 的值实例化。我想获得满足 Foo(A).item.price == 0 的独特 B 系列。
我尝试了以下显然不起作用的代码。
unique_B = df.loc[Foo(df.A.str).item.price == 0, "B"].unique()
我想我可以创建第三列来存储 foo(df.A) 的值,有更简单的解决方案吗?
使用df.A.apply(foo)
代替foo(df.A.str)
:
unique_B = df.loc[df.A.apply(foo) == 0, "B"].unique()
访问 item
属性 的 foo
class:
unique_B = df.loc[df.A.apply(lambda x: foo(x).item.price) == 0, "B"].unique()
假设我有一个包含 2 列 A 和 B 的 df 和一个 class Foo() ,它可以由 A 的值实例化。我想获得满足 Foo(A).item.price == 0 的独特 B 系列。 我尝试了以下显然不起作用的代码。
unique_B = df.loc[Foo(df.A.str).item.price == 0, "B"].unique()
我想我可以创建第三列来存储 foo(df.A) 的值,有更简单的解决方案吗?
使用df.A.apply(foo)
代替foo(df.A.str)
:
unique_B = df.loc[df.A.apply(foo) == 0, "B"].unique()
访问 item
属性 的 foo
class:
unique_B = df.loc[df.A.apply(lambda x: foo(x).item.price) == 0, "B"].unique()