Python 不能根据句子中是否不存在关键字来使用Pandas进行数学计算
我正在检查B列中是否有两个单词不存在,如果不存在,则在a列中取一个整数,并通过将其乘以-1来创建一个数字为负数的C列。如果这个词存在,它应该保持原样 我遇到了两个问题:1.我查不到超过一个单词;我得到一个类型错误 以下是df:Python 不能根据句子中是否不存在关键字来使用Pandas进行数学计算,python,pandas,dataframe,Python,Pandas,Dataframe,我正在检查B列中是否有两个单词不存在,如果不存在,则在a列中取一个整数,并通过将其乘以-1来创建一个数字为负数的C列。如果这个词存在,它应该保持原样 我遇到了两个问题:1.我查不到超过一个单词;我得到一个类型错误 以下是df: df = pd.DataFrame({"A": [10, 21, 13, 22], "B": ["Shares Rise on Jobs News",
df = pd.DataFrame({"A": [10, 21, 13, 22],
"B": ["Shares Rise on Jobs News",
"Outflows on bad projections",
"Rebounds on Bounce",
"Slides on negative assumption"]})
检查word是否存在:
df["C"] = \
df["B"].map(lambda x: "Negative" if "Rise" not in x else "Positive")
预期的输出为:
但如果我添加另一个单词来查找,它会返回错误的输出
df["C"] = \
df["B"].map(lambda x: "Negative" if "Rise" or "Rebounds" not in x else "Positive")
在处理问题的第二部分时,我调整了代码,如果没有关键字,则将数字改为负数:
df["C"] = \
df["B"].map(lambda x: df["A"](-1) if "Rise" not in x else df["A"])
我得到TypeError:“Series”对象不可调用我们可以执行np.where+包含
啊。你赢了我。我有同样的解决办法+1.这对第一部分有效。第二部分呢。我试着用-1和1替换负和Pos,然后乘以df[A],但我得到的序列是不可下标的。我认为这是可行的:df['C']=np.wheredf[B].str.containsr'Rise | responses',case=False,df[A]。乘以1,df[A]。乘以-1
df['Out'] = np.where(df.B.str.contains('Rise|Rebounds', case=False), 'Pos', 'Nag')
df
Out[11]:
A B Out
0 10 Shares Rise on Jobs News Pos
1 21 Outflows on bad projections Nag
2 13 Rebounds on Bounce Pos
3 22 Slides on negative assumption Nag