当存在相似值时,如何删除 pandas 数据框中的行?
How to drop rows in pandas dataframe, when there is similar values?
我有一个 python pandas 股票数据数据框,我正在尝试过滤其中的一些代码。
有些公司有 2 个或更多个股票代码(不同类型的股票,当一个股票是优先股而另一个不是)。
我想放弃那些额外的份额价值,只让份额更高。在数据框中我也有公司名称,所以也许有一种方法可以使用它来制定一些条件,然后在比较同一家公司的数量时将其删除?我怎样才能做到这一点?
使用 groupby 和 idxmax:
假设这个数据框:
>>> df
ticker volume
0 CEBR3 123
1 CEBR5 456
2 CEBR6 789 # <- keep for group CEBR
3 GOAU3 23 # <- keep for group GOAU
4 GOAU4 12
5 CMIN3 135 # <- keep for group CMIN3
>>> df.loc[df.groupby(df['ticker'].str.extract(r'^(.*)\d', expand=False),
sort=False)['volume'].idxmax().tolist()]
ticker volume
2 CEBR6 789
3 GOAU3 23
5 CMIN3 135
我有一个 python pandas 股票数据数据框,我正在尝试过滤其中的一些代码。
有些公司有 2 个或更多个股票代码(不同类型的股票,当一个股票是优先股而另一个不是)。
我想放弃那些额外的份额价值,只让份额更高。在数据框中我也有公司名称,所以也许有一种方法可以使用它来制定一些条件,然后在比较同一家公司的数量时将其删除?我怎样才能做到这一点?
使用 groupby 和 idxmax:
假设这个数据框:
>>> df
ticker volume
0 CEBR3 123
1 CEBR5 456
2 CEBR6 789 # <- keep for group CEBR
3 GOAU3 23 # <- keep for group GOAU
4 GOAU4 12
5 CMIN3 135 # <- keep for group CMIN3
>>> df.loc[df.groupby(df['ticker'].str.extract(r'^(.*)\d', expand=False),
sort=False)['volume'].idxmax().tolist()]
ticker volume
2 CEBR6 789
3 GOAU3 23
5 CMIN3 135