【发布时间】:2013-07-09 22:09:06
【问题描述】:
我有一个 pandas 数据框和一个 pandas 标识符系列,并希望从数据框中过滤出与该系列中的标识符相对应的行。要从数据框中获取标识符,我需要连接它的前两列。我尝试了各种过滤方法,但到目前为止似乎没有任何效果。这是我尝试过的:
1) 我尝试在数据框中添加一列布尔值,如果该行对应于其中一个标识符,则为 true,否则为 false(希望之后能够使用新列进行过滤):
df["isInAcids"] = (df["AcNo"] + df["Sortcode"]) in acids
在哪里
acids
是包含标识符的系列。
但是,这给了我一个
TypeError: unhashable type
2) 我尝试使用 apply 函数进行过滤:
df[df.apply(lambda x: x["AcNo"] + x["Sortcode"] in acids, axis = 1)]
这不会给我一个错误,但数据框的长度保持不变,所以它似乎没有过滤任何东西。
3) 我添加了一个新列,其中包含连接的字符串/标识符,然后尝试过滤(参见Filter dataframe rows if value in column is in a set list of values):
df["ACIDS"] = df["AcNo"] + df["Sortcode"]
df[df["ACIDS"].isin(acids)]
但同样,数据框没有改变。
我希望这是有道理的......
有什么建议我可能会出错吗? 谢谢, 安妮
【问题讨论】:
-
您能否发布一个小样本,说明您的
dataframe和series以及您期望的结果是什么样的? -
这些操作不是就地的,所以除非你明确告诉它,否则数据框不会改变(这是一件好事)。
-
嗨,安迪,非常感谢,如果我在第三个解决方案中添加
df = ...就可以了。