Python 匹配内容创建新列
你好,我有一个数据集,我想匹配我的关键字与位置。我遇到的问题是,我的数据集中的位置“阿富汗”或“喀布尔”或“赫尔蒙德”出现在150多个组合中,包括拼写错误、大写以及城市或城镇名称。我想做的是创建一个单独的列,如果位置中包含这些字符中的任何一个“afg”或“afg”或“kab”或“helm”或“helm”,则返回值1。我不确定大小写是否有区别 例如,有数百个这样的地点组合:杰格达拉克、阿富汗、阿富汗、加兹尼♥, 喀布尔/阿富汗 我已经尝试过这段代码,如果它与短语完全匹配,这是很好的,但是有太多的变化来记录每个异常Python 匹配内容创建新列,python,pandas,function,Python,Pandas,Function,你好,我有一个数据集,我想匹配我的关键字与位置。我遇到的问题是,我的数据集中的位置“阿富汗”或“喀布尔”或“赫尔蒙德”出现在150多个组合中,包括拼写错误、大写以及城市或城镇名称。我想做的是创建一个单独的列,如果位置中包含这些字符中的任何一个“afg”或“afg”或“kab”或“helm”或“helm”,则返回值1。我不确定大小写是否有区别 例如,有数百个这样的地点组合:杰格达拉克、阿富汗、阿富汗、加兹尼♥, 喀布尔/阿富汗 我已经尝试过这段代码,如果它与短语完全匹配,这是很好的,但是有太多的变
keywords= ['Afghanistan','Kabul','Herat','Jalalabad','Kandahar','Mazar-i-Sharif', 'Kunduz', 'Lashkargah', 'mazar', 'afghanistan','kabul','herat','jalalabad','kandahar']
#how to make a column that shows rows with a certain keyword..
def keyword_solution(value):
strings = value.split()
if any(word in strings for word in keywords):
return 1
else:
return 0
taleban_2['keyword_solution'] = taleban_2['location'].apply(keyword_solution)
# below will return the 1 values
taleban_2[taleban_2['keyword_solution'].isin(['1'])].head(5)
只需替换此逻辑,其中所有结果将放入“关键字解决方案”列,该列匹配“Afg”或“Afg”或“kab”或“kab”或“kund”或“kund”如下所示:
- 《纽约时报》的句子
- 删除所有非字母数字字符
- 将所有内容更改为小写,从而消除对不同单词变体的需要
- 把句子分成一个
或列表
。由于句子太长,我使用了集合
集合
- 根据需要添加到
关键字列表中
- 匹配两个列表中的单词
- ['afghanistan']中的'afgh':
False
:“阿富汗”中的“afgh”
True
- 因此,列表理解在
的每个单词中搜索每个关键字word\u列表
[如果y中的单词为True,如果x中的单词为y为False,则关键字中的单词为False]
- 这样可以缩短关键字列表(即给定
,afgh
不需要)afghanistan
- ['afghanistan']中的'afgh':
重新导入
作为pd进口熊猫
关键词=[“贾拉拉巴德”,
“昆都士”,
“虔诚军”,
"玛扎尔",,
“赫拉特”,
"玛扎尔",,
“啊,
"kab",,
“kand”]
数据框({'句话]:['塔利班希望美国从阿富汗撤军土耳其希望美国从叙利亚北部撤军,朝鲜希望他们至少停止与韩国的军事演习',
“特朗普总统现在至少在某种程度上对这三人都负有责任,但没有得到多少回报。这位自封的交易撮合者已经放弃了美国在世界多个地方的军事存在的杠杆作用,而没有与那些为美军撤离而欢呼的人谈判让步。”,
对于一位一再承诺让美国摆脱对外战争的总统来说,这些决定反映了一个更广泛的信念,即让军队回家——或者至少让他们离开热点——比讨价还价更重要。在他看来,几十年的海外军事冒险只会让美国付出巨大的鲜血和叛国代价当然,等待交易会延长国家灾难的时间。”,
“美国驻阿富汗最高指挥官奥斯汀·米勒将军星期一说,驻阿富汗部队的规模比去年减少了2000人,降至13000至12000人之间。”,
塔利班高级谈判代表海鲁拉·海尔赫瓦(Khairkhwa)最近在该组织网站上接受采访时说:“美国处处关注自己的利益,一旦达不到这些利益,它就会离开该地区。”。“这方面最好的例子是放弃叙利亚境内的库尔德人。很明显,喀布尔政府将面临同样的命运。”,
“阿富汗”]})
#替换非字母数字字符
df['sequences']=df['sequences'].apply(lambda x:re.sub('[\W\u]+','',x))
#创建一个包含所有单词列表的新列
df['word_list']=df['statemens'].apply(lambda x:set(x.lower().split())
#对照关键字检查列表
df['location']=df.word_list.apply(lambda x:any([y中的word为True,x中的y为False,关键字中的word为False]))
#决赛
打印(测向位置)
0对
1错误
2错误
3正确
4正确
5对
名称:位置,数据类型:布尔