Python 3.x 从列中提取特定值并将其存储在新列中

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

我有一个pandas列,它以列表的形式存储数据,格式如下:

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