在列中找到元组列表的第一个元素的第一个单词?
find the first word of the first element of a list of tuples in a column?
我有这样的数据帧:
import pandas as pd
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?')
]}, {'text': [
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')
]}
我想在每个元组的第一个元素中找到第一个单词(即 tom、Nick、juli、tony)。
我尝试了以下代码,但它无法处理 tom-mark' 中的'-'
name = t[0].lower()
name = name.split()
name = name[0]
但是,有些元组的第一个元素是 2 个单词。我怎样才能找到每个元组的第一个单词?
这样的事情有帮助吗:
import re
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?'),
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')]
}
first_names = []
for names in test['text']:
name = re.match(r'\w+', names[0])
first_names.append(name[0].lower())
print(first_names)
['tom', 'nick', 'juli', 'tony']
您可以使用 pandas 数据框并使用函数映射 text
列的值以获取名字,然后从列表列表中为该特定列创建一个列表。
在函数内部,使用正则表达式从该列表中的所有元组中仅提取名字,并return一个名字列表。
import pandas as pd
import re
def get_first(x):
return list(map(lambda tup: re.match(r'\w+', tup[0])[0].lower(), x))
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?')
]}, {'text': [
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')
]}
data = sum(pd.DataFrame(test).applymap(get_first)['text'].tolist(), [])
print(data)
我有这样的数据帧:
import pandas as pd
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?')
]}, {'text': [
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')
]}
我想在每个元组的第一个元素中找到第一个单词(即 tom、Nick、juli、tony)。
我尝试了以下代码,但它无法处理 tom-mark' 中的'-'
name = t[0].lower()
name = name.split()
name = name[0]
但是,有些元组的第一个元素是 2 个单词。我怎样才能找到每个元组的第一个单词?
这样的事情有帮助吗:
import re
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?'),
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')]
}
first_names = []
for names in test['text']:
name = re.match(r'\w+', names[0])
first_names.append(name[0].lower())
print(first_names)
['tom', 'nick', 'juli', 'tony']
您可以使用 pandas 数据框并使用函数映射 text
列的值以获取名字,然后从列表列表中为该特定列创建一个列表。
在函数内部,使用正则表达式从该列表中的所有元组中仅提取名字,并return一个名字列表。
import pandas as pd
import re
def get_first(x):
return list(map(lambda tup: re.match(r'\w+', tup[0])[0].lower(), x))
test = {'text': [
('tom-mark', 'tom', 'tom is a good guy.'),
('Nick X','nick', 'Is that Nick?')
]}, {'text': [
('juli', 'juli', 'Tom likes juli so much.'),
('tony', 'tony', 'Steve and Tony listen in as well.')
]}
data = sum(pd.DataFrame(test).applymap(get_first)['text'].tolist(), [])
print(data)