SD_*_*_23 3 python dataframe python-3.x pandas
我有一个python数据框,其中包含多个季节的NHL Player数据。我正在尝试删除2018-2019年未参加比赛的所有玩家行。例如,如果乔·琼斯(Joe Jones)在2018-2019赛季打球,我想保留他那个赛季以及他打过的任何其他赛季的数据。
我在想代码看起来像这样:
for player in data.players:
if data['Year'] == '2018-2019':
save player's name
else:
remove player's data
Run Code Online (Sandbox Code Playgroud)
例如,我的数据框如下所示
Year Player TM GP
2018-2019 Joe MTL 78
2017-2018 Joe MTL 82
2016-2017 Joe MTL 80
2017-2018 Jim STL 76
2016-2017 Jim STL 82
2018-2019 Jack MIN 82
Run Code Online (Sandbox Code Playgroud)
结果将是:
Year Player TM GP
2018-2019 Joe MTL 78
2017-2018 Joe MTL 82
2016-2017 Joe MTL 80
2018-2019 Jack MIN 82
Run Code Online (Sandbox Code Playgroud)
groupby.filterdf.groupby('Player').filter(lambda d: '2018-2019' in {*d.Year})
Year Player TM GP
0 2018-2019 Joe MTL 78
1 2017-2018 Joe MTL 82
2 2016-2017 Joe MTL 80
5 2018-2019 Jack MIN 82
Run Code Online (Sandbox Code Playgroud)
同样的事情,但使用values数组而不是set
df.groupby('Player').filter(lambda d: '2018-2019' in d.Year.values)
Run Code Online (Sandbox Code Playgroud)
m = df.Year.values == '2018-2019'
i, u = pd.factorize(df.Player)
a = np.zeros(len(u), bool)
np.logical_or.at(a, i, m)
df[a[i]]
Year Player TM GP
0 2018-2019 Joe MTL 78
1 2017-2018 Joe MTL 82
2 2016-2017 Joe MTL 80
5 2018-2019 Jack MIN 82
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |