【发布时间】:2021-12-17 18:07:57
【问题描述】:
我有一个名为 customer_base 的数据集,包含超过 800K 行,如下所示:
| ID | AGE | GENDER | OCCUPATION |
|---|---|---|---|
| 1 | 64 | 101 | "occ1" |
| 2 | 64 | 100 | "occ2" |
| 2 | 66 | 100 | Nan |
| 2 | Nan | 100 | "occ2" |
| 3 | Nan | 101 | "occ3" |
| 3 | Nan | Nan | Nan |
| 3 | 32 | Nan | Nan |
| . | . | . | . |
在分组操作之后,所需的版本应该如下所示:
| ID | AGE | GENDER | OCCUPATION |
|---|---|---|---|
| 1 | 64 | 101 | "occ1" |
| 2 | 66 | 100 | "occ2" |
| 3 | 32 | 101 | "occ3" |
| . | . | . | . |
之前我尝试过如下代码示例,以使表格尽可能干净,但花费了太多时间。现在我需要一个更快的函数来获取occupation 列的任何可用值。
customer_base.groupby("ID",
as_index=False).agg({"GENDER":"max",
"AGE":"max",
"OCCUPATION":lambda x: np.nan if len(x[x.notna()])==0 else x[x.notna()].values[0]})
提前感谢您的优化想法,对可能的问题重复表示歉意
【问题讨论】:
标签: python pandas optimization pandas-groupby aggregate-functions