我正在处理一个CSV文件,该文件显示了2018年的总统会议.CSV说明了总统所做的事情以及他当天会见的人。每一行都是他的日程安排。
我有一个名为“oque”的列(或原始数据集中的“ReuniãoMinisterial”),其值为字符串。但我想只保留人名(名字,中间名和姓)。
所以带有人名的第一行有以下内容:
Eliseu Padilha, ministro-chefe da Casa Civil; Henrique Meirelles, ministro de Estado da Fazenda; Ronaldo Nogueira, ministro de Estado do Trabalho; Antônio Neto, presidente das Centrais Sindicais Brasileiras; José Calixto Ramos, presidente Nacional da NCST; Ricardo Patah, presidente Nacional UGT; Deputado Federal Paulo Pereira da Silva, Presidente Nacional da Central Força Sindical e Presidente Nacional do Partido Solidariedade
它应该只显示:Eliseu Padilha,Henrique Meirelles,Ronaldo Nogueira,AntônioNeto,JoséCalixtoRamos,Ricardo Patah,Paulo Pereira da Silva。
数据集位于以下链接:https://gist.github.com/gabrielacaesar/af8835a0a1c01d16f48f0a7336a8d3f0
答案 0 :(得分:0)
这是一种方法,认为它不是很简单。我们的想法是首先在分号上拆分字符串,然后在每个字符串上应用str.extract以仅提取逗号之前的字符串。
df['Name'].str.split(';', expand = True)\
.apply(lambda x: ','.join(x.str.extract('([A-Za-z ]+),', expand = False)), axis = 1)
答案 1 :(得分:0)
要获得所需的结果,您可以使用列表推导并在按;
和,
拆分后提取第一个元素。
使用re库删除标题。
import pandas as pd
import re
s = 'Eliseu Padilha, ministro-chefe da Casa Civil; Henrique Meirelles, \
ministro de Estado da Fazenda; Ronaldo Nogueira, ministro de Estado do\
Trabalho; Antônio Neto, presidente das Centrais Sindicais Brasileiras; José \
Calixto Ramos, presidente Nacional da NCST; Ricardo Patah, presidente Nacional\
UGT; Deputado Federal Paulo Pereira da Silva, Presidente Nacional da Central Força\
Sindical e Presidente Nacional do Partido Solidariedade'
# Recreate dataframe with string (s) two times
df = pd.DataFrame(dict(oque=[s,s]))
titles = ['Deputado Federal ','General ']
df['oque'] = (df['oque'].apply(lambda x:
[re.sub('|'.join(titles),'',i.split(', ')[0]) for i in x.split('; ')]))
# Print first row
print(df['oque'][0])
返回:
['Eliseu Padilha',
'Henrique Meirelles',
'Ronaldo Nogueira',
'Antônio Neto',
'José Calixto Ramos',
'Ricardo Patah',
'Paulo Pereira da Silva']