[英]Splitting a string in a Python DataFrame
我在 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:选择数组列中的元素以访问“数组”列中的元素)
对于除姓氏之外的所有名称,您可以将" ".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
试试这个来解决你的问题:
import pandas as pd
df = pd.DataFrame(
{'composers':
[
'Joseph Haydn',
'Wolfgang Amadeus Mozart',
'Antonio Salieri',
'Eumir Deodato',
]
}
)
df['lastname'] = df['composers'].str.split(n = 0, expand = False).str[1]
您现在可以找到 DataFrame,如下所示。
composers lastname
0 Joseph Haydn Haydn
1 Wolfgang Amadeus Mozart Amadeus Mozart
2 Antonio Salieri Salieri
3 Eumir Deodato Deodato
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.