【发布时间】:2014-11-01 18:51:05
【问题描述】:
为什么这不适用于使用 pandas 的字符串方法?
df['col1'].str.contains(df['col2'])
不断得到:“系列”对象是可变的,因此它们不能被散列。
更新:澄清一下 - 我会逐行比较这些列,并让部分字符串按顺序完全匹配。例如,对于下面的第 1 列和第 2 列,我希望上面的输出与输出中一样:
col-1 col-2 output
'cat' 'at' True
'aunt' 'at' False
'dog' 'dg' False
'edge' 'dg' True
【问题讨论】:
-
contains需要一个模式,我想你想要.isin所以df['col1'].isin(df['col2']) -
我觉得你需要
df['col1'].isin(df['col2'].values),对吧? -
所以我只想匹配字符串的一部分也没关系? 'mn' isin 'mnxn' 会是真的吗?
-
不,
isin完全匹配,部分匹配你必须使用contains,我会更新我的答案来演示 -
谢谢@EdChum。我需要澄清 - 我想将一列中的值与另一列中的值逐行匹配。所以在你下面的 [77] 中,行索引 4 应该是 False ......因为“xa”中没有“q”。此外,它必须是特定于订单的。如果第一栏说“ant”,第二栏说“at”,那么答案就是“假”。但如果第一列说“猫”,它应该是“真”。