根据预定义的选项列表将Python DF列拆分为2列
我有一个如下所示的数据帧:根据预定义的选项列表将Python DF列拆分为2列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据帧: print(df): Text John Smith abc def ghi jkl Michael Smith abc def ghi jkl Liz Jones abc def ghi jkl print(df): Name | Information John Smith | abc def ghi jkl Michael Smith | abc def ghi jkl
print(df):
Text
John Smith abc def ghi jkl
Michael Smith abc def ghi jkl
Liz Jones abc def ghi jkl
print(df):
Name | Information
John Smith | abc def ghi jkl
Michael Smith | abc def ghi jkl
Liz Jones | abc def ghi jkl
我还有一个预定义的要查找的人员列表,并将上述内容分为两列
names = ('John Smith','Michael Smith','Liz Jones')
我希望得到以下信息:
print(df):
Text
John Smith abc def ghi jkl
Michael Smith abc def ghi jkl
Liz Jones abc def ghi jkl
print(df):
Name | Information
John Smith | abc def ghi jkl
Michael Smith | abc def ghi jkl
Liz Jones | abc def ghi jkl
我试过:
df['Name','Information'] = df['Text'].str.split(names)
但是我认为str.split需要一个字符串,不需要一个名字列表。是否仍然可以从定义的列表中拆分列
任何帮助都将不胜感激。非常感谢对于正则表达式或,通过|
将所有名称连接起来,然后对于所有其他值:
names = ('John Smith','Michael Smith','Liz Jones')
df = df['Text'].str.extract(f'(?P<Name>{"|".join(names)})(?P<Information>.*)')
print (df)
Name Information
0 John Smith abc def ghi jkl
1 Michael Smith abc def ghi jkl
2 Liz Jones abc def ghi jkl
或:
df[['Name','Information']]=df.pop('Text').str.extract(f'(?P{“|”).join(names)}(.*))
打印(df)
姓名信息
0约翰·史密斯abc def ghi jkl
1迈克尔·史密斯abc def ghi jkl
2 Liz Jones abc def ghi jkl
对正则表达式或使用|
连接的所有名称,然后对所有其他值使用:
names = ('John Smith','Michael Smith','Liz Jones')
df = df['Text'].str.extract(f'(?P<Name>{"|".join(names)})(?P<Information>.*)')
print (df)
Name Information
0 John Smith abc def ghi jkl
1 Michael Smith abc def ghi jkl
2 Liz Jones abc def ghi jkl
或:
df[['Name','Information']]=df.pop('Text').str.extract(f'(?P{“|”).join(names)}(.*))
打印(df)
姓名信息
0约翰·史密斯abc def ghi jkl
1迈克尔·史密斯abc def ghi jkl
2 Liz Jones abc def ghi jkl