创建以匹配文本为条件的新二进制列

Create new binary column conditioned on matching text

我的数据框 dftxt_house 一列 url_text 和 388 行。我想根据 url_text 中的文本创建一个新列 blocked。如果 url_text 中的相应文本包含 blocked youYou're blocked,则新列 blocked 中的行应取值 1,否则值为 0 .下面的代码适用于 blocked youYou're blocked,但是当使用 or 语句将两者添加到代码时,它会在 [=15] 列的所有行上产生值 1 =].

我是否误解了 or 的说法?

数据框一览dftxt_house

dftxt_house.head()
                                                                                                                                                                                                  url_text
0  Text SIGN LIKUOL to 50409 to send this to your officials\nen)\n1 signer. Let's get to 10!\n\nAN OPEN LETTER to THE U.S. CONGRESS STARTED by JOANNE\n\nMail in Ballot being blocked by Trump\n\nHello...
1           \n\nf;\n\nMark DeSaulnier @\n\n@RepDeSaulnier\n\n@RepDeSaulnier blocked\nyou\nb ColUir- |= 0) (eel, ¢-10 macelaamiell(e\uiiate|\n\n@RepDeSaulnier and viewing\n@RepDeSaulnier’s Tweets.\n\n \n
2  JACKIE SPEIER COMMITTEE OW ARMED SERVICES\ntate Distarcr, CAuiroania SUBCOMMITTEES\n\n2465 Ravaurn House Orrice BuLOmG CHAIRWOMAN, MILiTafy PEAS INHEL\n\nWasumiaton, DC 20515-0514 , StRateaic Fonc...
3  PANGRESSMAN ERIC SWALWELL\n\nPRC <€—  VING CALIFORNIA'S 15TH CONGRESSIONAL DISTRICT\n\n \n\nFollow\n\nRep. Eric Swalwell |\n@RepSwalwell\n\n@RepSwalwell\nblocked you\nYou are blocked from followin...                

应该创建新 binray 列的代码

# match all rows with the string "blocked you" or "You're blocked". 
# a user who have been blocked by another user i.e. a politician. Create new column with 0 = no block and 1 = block
dftxt_house['blocked'] = dftxt_house.apply(
    lambda row: 1 if 'blocked you' or "You're blocked" in row['url_text'] else 0,
    axis=1
)

当前“错误”结果

dftxt_house['blocked'].value_counts()
1    388

你确实误解了 or 语句,它应该是这样的

dftxt_house['blocked'] = dftxt_house.apply(
    lambda row: 1 if 'blocked you' in row['url_text'] or "You're blocked" in row['url_text'] else 0,
    axis=1