パンダの列に(いくつかの場合とミドルネーム)の最初の名前のイニシャルを取得し、完全な姓を保持

stud_eco:

私は、次のようないくつかのテニスプレーヤーの姓と名を表す列を持つデータフレームパンダを持っています。

   | Player              | 
   |---------------------|
0  | 'Roddick Andy'      |
1  | 'Federer Roger'     |
2  | 'Tsonga Jo Wilfred  |

私があれば、完全な姓を維持し、名前のイニシャルとミドルネームを取得したいです。パンダの列は次のようになりますので:

   | Player            | 
   |-------------------|
0  | 'Roddick A.'      |
1  | 'Federer R.'      |
2  | 'Tsonga J.W.'     | N.B. J.W. with no space

誰もが提案を持っていますか?感謝!

クアンホアン:

ここでのアプローチだstr.extractallgroupby

(df.Player
  .str.extractall('(?P<Surname>\w*)\s(?P<Name>\w*)')
  .groupby(level=0)
  .agg({'Surname':'first',
        'Name': lambda x: x.str[0].add('.').sum()
        })
  .agg(' '.join, axis=1)
)

出力:

0     Roddick A.
1     Federer R.
2    Tsonga J.W.
dtype: object

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=9624&siteId=1