【发布时间】:2018-08-29 17:13:02
【问题描述】:
例子:
row_number |id |firstname | middlename | lastname |
0 | 1 | John | NULL | Doe |
1 | 1 | John | Jacob | Doe |
2 | 2 | Alison | Marie | Smith |
3 | 2 | NULL | Marie | Smith |
4 | 2 | Alison | Marie | Smith |
我试图弄清楚如何 groupby id,然后为每个 groupby 抓取具有最少 NULL 值数量的行,删除包含最少 NULL 数量的任何额外行都可以(例如,删除 row_number 4,因为它将 row_number 2 与 id=2 的 NULLS 的最少数量联系在一起)
这个例子的答案是 row_numbers 1 和 2
最好是 ANSI SQL,但如果你能想到一种方法,我可以翻译其他语言(例如 python 和 pandas)
编辑: 为平局的情况增加了一行。
【问题讨论】:
-
为什么会是“1 和 2”?为什么不是其他行?结果不应该将“1和2”汇总为一行吗?
-
第 1 行和第 2 行的组 (id) 的 NULL 值最少
-
所以如果我们按 id 分组,那么我们就有包含 id=1 和 id=2 的组。我需要计算这些组中 NULL 的数量,并选择 NULL 数量最少的行
-
我认为他的意思是
row_number列中的值是 1 或 2,这将是实际的第 2 行和第 3 行... -
为什么要标记 pandas ....
标签: python sql database pandas ansi