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.extractall
とgroupby
:
(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