pandas 如何对已分组的数据框“取消分组”?

dxxyhpgq  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(203)

我有一个很大的数据框,其中包含给定日期的1亿个股票收益率观测值,以及每只股票的标识符,我的问题是,对于某些股票,在某些日期的收益率列中存在缺失值,举一个小例子,数据框如下所示:
| 识别号|日期|返回|
| - ------|- ------|- ------|
| 小行星|一九七〇年一月一日|0.043|
| 小行星|一九七〇年一月二日|0.023|
| 小行星|一九七〇年一月三日|-0.010|
| 小行星|一九七〇年一月一日|0.010分|
| 小行星|一九七〇年一月二日|钠氮|
| 小行星|一九七〇年一月三日|-0.034|
| 小行星10003|一九七〇年一月一日|零零四十人|
| 小行星10003|一九七〇年一月二日|-0.041|
| 小行星10003|一九七〇年一月三日|0.009|
我希望删除所有包含一个或多个缺失值的股票,我这样做:

df = df[df['RET'].notna().groupby('ID').transform('all')]

从上面的数据框示例中,这将生成一个分组数据框,其中股票在回报列中没有缺失值:
| 识别号|日期|返回|
| - ------|- ------|- ------|
| 小行星|一九七〇年一月一日|0.043|
| | 一九七〇年一月二日|0.023|
| | 一九七〇年一月三日|-0.010|
| 小行星10003|一九七〇年一月一日|零零四十人|
| | 一九七〇年一月二日|-0.041|
| | 一九七〇年一月三日|0.009|
但是,我需要将数据框重新转换为未分组状态。你们中有人有解决方案吗?为了指定,我希望数据框如下所示:
| 识别号|日期|返回|
| - ------|- ------|- ------|
| 小行星|一九七〇年一月一日|0.043|
| 小行星|一九七〇年一月二日|0.023|
| 小行星|一九七〇年一月三日|-0.010|
| 小行星10003|一九七〇年一月一日|零零四十人|
| 小行星10003|一九七〇年一月二日|-0.041|
| 小行星10003|一九七〇年一月三日|0.009|
提前感谢您提供任何可能的解决方案。
我已经尝试过使用. unstack()和. reset_index(),但没有任何效果

prdp8dxp

prdp8dxp1#

不需要分组,简单的布尔索引+.isin()就足够了:

x = df.loc[df['Return'].isna(), 'ID'].unique()
print(df[~df['ID'].isin(x)])

图纸:

ID        Date  Return
0  10001  1970-01-01   0.043
1  10001  1970-01-02   0.023
2  10001  1970-01-03  -0.010
6  10003  1970-01-01   0,040
7  10003  1970-01-02  -0.041
8  10003  1970-01-03   0.009

相关问题