Python 3.x 从列中提取特定值并将其存储在新列中
我有一个pandas列,它以列表的形式存储数据,格式如下:Python 3.x 从列中提取特定值并将其存储在新列中,python-3.x,pandas,list,split,Python 3.x,Pandas,List,Split,我有一个pandas列,它以列表的形式存储数据,格式如下: text [['Mark','PERSON'],['Data Scientist','TITLE'], ['Berlin','LOC'], ['Python','SKILLS'], ['Tableau,','SKILLS'], ['SQL','SKILLS'], ['AWS','SKILLS']] [['John','PERSON'],['Data Engineer','TITLE'], ['London','LOC'], ['Pyth
text
[['Mark','PERSON'],['Data Scientist','TITLE'], ['Berlin','LOC'], ['Python','SKILLS'], ['Tableau,','SKILLS'], ['SQL','SKILLS'], ['AWS','SKILLS']]
[['John','PERSON'],['Data Engineer','TITLE'], ['London','LOC'], ['Python','SKILLS'], ['DB2,','SKILLS'], ['SQL','SKILLS']
[['Pearson','PERSON'],['Intern','TITLE'], ['Barcelona','LOC'], ['Python','SKILLS'], ['Excel,','SKILLS'], ['SQL','SKILLS']
[['Broody','PERSON'],['Manager','TITLE'], ['Barcelona','LOC'], ['Team Management','SKILLS'], ['Excel,','SKILLS'], ['Good Communications','SKILLS']
[['Rita','PERSON'],['Software Developer','TITLE'], ['London','LOC'], ['Dot Net','SKILLS'], ['SQl Server,','SKILLS'], ['VS Code,'SKILLS']
我希望看到的输出是:
PERSON TITLE LOC SKILLS
Mark Data Scientist Berlin Python, Tableau, SQL, AWS
John Data Engineer London Python, DB2,SQL
。。。。。对于其余的输入行也是如此
因此,本质上是通过“,”分割数据,并将“,”之前的左部分存储为列标题,将“,”的右部分存储为值
我如何才能做到这一点?- 如果您有这样的数据帧,请将其称为“df”:
- 您可以尝试类似的方法:
- 输出
根据我的要求,信息正确地存储在所有列表中,但需要明确的是,如果我为1000行类似外观的文本运行上述代码,那么只需将一个列表分配给一个新的数据框列,就可以得到所需的输出,对吗?比如df['Skills]=Skills,df['location']=loc?当然可以,但是如果你想的话,你能给我看一下你的数据帧的前5位,以便验证你需要的过程吗?嘿!我已经更新了我的输入。如果你现在想试试的话?我在那里添加了五个虚拟行。谢谢嘿@Django0602,我已经试过了,可以说这很有效,我希望对你有帮助,祝你好运。
index text
0 1 [[Mark, PERSON], [Data Scientist, TITLE], [Ber...
1 2 [[John, PERSON], [Data Engineer, TITLE], [Lond...
2 3 [[Pearson, PERSON], [Intern, TITLE], [Barcelon...
3 4 [[Broody, PERSON], [Manager, TITLE], [Barcelon...
4 5 [[Rita, PERSON], [Software Developer, TITLE], ...
person=[]
skills=[]
title=[]
loc=[]
temp=[]
for i in range(len(df['text'])):
for j in range(len(df['text'][i])):
if df['text'][i][j][1]=='PERSON':
person.append(df['text'][i][j][0])
elif df['text'][i][j][1]=='TITLE':
title.append(df['text'][i][j][0])
elif df['text'][i][j][1]=='LOC':
loc.append(df['text'][i][j][0])
elif df['text'][i][j][1]=='SKILLS':
temp.append(df['text'][i][j][0].replace(",", ""))
skills.append(",".join(temp))
temp=[]
PERSON TITLE LOC SKILLS
0 Mark Data Scientist Berlin Python,Tableau,SQL,AWS
1 John Data Engineer London Python,DB2,SQL
2 Pearson Intern Barcelona Python,Excel,SQL
3 Broody Manager Barcelona Team Management,Excel,Good Communications
4 Rita Software Developer London Dot Net,SQl Server,VS Code