Pythonに、名前の列(Joseph Haydn、Wolfgang Amadeus Mozart、Antonio Salieriなど)を持つDataFrameがあります。
ハイドン、モーツァルト、サリエリなどの姓の新しい列を取得したいと思います。
文字列を分割する方法は知っていますが、シリーズまたはデータフレーム列に適用する方法が見つかりませんでした。
あなたが持っている場合:
_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:配列列の要素の選択 「配列」列の要素にアクセスする場合も参照してください)
姓を除くすべての場合、各行の最後の要素(_[:-1]
_)を除くすべてに" ".join(..)
を適用できます。
_data.composers.str.split('\s+').str[:-1].apply(lambda parts: " ".join(parts))
_
これは:
_0 Joseph
1 Wolfgang Amadeus
2 Antonio
3 Eumir
dtype: object
_