我在Python中有一个带有名称列的DataFrame(例如Joseph Haydn,Wolfgang Amadeus Mozart,Antonio Salieri等)。
我想要一个带有姓氏的新专栏:海顿,莫扎特,萨列里等等。
我知道如何分割字符串,但是找不到将其应用于系列或“数据框”列的方法。
最佳答案
如果你有:
import pandas
data = pandas.DataFrame({"composers": [
"Joseph Haydn",
"Wolfgang Amadeus Mozart",
"Antonio Salieri",
"Eumir Deodato"]})
假设您只需要名字(而不是像Amadeus这样的中间名):
data.composers.str.split('\s+').str[0]
会给:
0 Joseph
1 Wolfgang
2 Antonio
3 Eumir
dtype: object
您可以将其分配给同一数据框中的新列:
data['firstnames'] = data.composers.str.split('\s+').str[0]
姓氏为:
data.composers.str.split('\s+').str[-1]
这使:
0 Haydn
1 Mozart
2 Salieri
3 Deodato
dtype: object
(另请参阅Python Pandas: selecting element in array column,以访问“数组”列中的元素)
对于除姓氏以外的所有名称,您可以将
" ".join(..)
应用于每行中除姓氏之外的所有元素([:-1]
):data.composers.str.split('\s+').str[:-1].apply(lambda parts: " ".join(parts))
这使:
0 Joseph
1 Wolfgang Amadeus
2 Antonio
3 Eumir
dtype: object
关于python - 在Python DataFrame中拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32425334/