And*_*ner 16
如果你有:
import pandas
data = pandas.DataFrame({"composers": [
"Joseph Haydn",
"Wolfgang Amadeus Mozart",
"Antonio Salieri",
"Eumir Deodato"]})
Run Code Online (Sandbox Code Playgroud)
假设您只想要名字(而不是像Amadeus这样的中间名):
data.composers.str.split('\s+').str[0]
Run Code Online (Sandbox Code Playgroud)
会给:
0 Joseph
1 Wolfgang
2 Antonio
3 Eumir
dtype: object
Run Code Online (Sandbox Code Playgroud)
您可以将其分配给同一数据框中的新列:
data['firstnames'] = data.composers.str.split('\s+').str[0]
Run Code Online (Sandbox Code Playgroud)
姓氏将是:
data.composers.str.split('\s+').str[-1]
Run Code Online (Sandbox Code Playgroud)
这使:
0 Haydn
1 Mozart
2 Salieri
3 Deodato
dtype: object
Run Code Online (Sandbox Code Playgroud)
(另请参阅Python Pandas:在数组列中选择元素中的元素以访问"数组"列中的元素)
对于除姓氏之外的所有名称,您可以应用于" ".join(..)除[:-1]每行的最后一个元素()之外的所有元素:
data.composers.str.split('\s+').str[:-1].apply(lambda parts: " ".join(parts))
Run Code Online (Sandbox Code Playgroud)
这使:
0 Joseph
1 Wolfgang Amadeus
2 Antonio
3 Eumir
dtype: object
Run Code Online (Sandbox Code Playgroud)