web-dev-qa-db-ja.com

Python DataFrameで文字列を分割する

Pythonに、名前の列(Joseph Haydn、Wolfgang Amadeus Mozart、Antonio Salieriなど)を持つDataFrameがあります。

ハイドン、モーツァルト、サリエリなどの姓の新しい列を取得したいと思います。

文字列を分割する方法は知っていますが、シリーズまたはデータフレーム列に適用する方法が見つかりませんでした。

7
Rene Decol

あなたが持っている場合:

_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
_
16
Andre Holzner