示例:
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的最少NULL值联系起来)
本例的答案是row_numbers 1和2
最好是ANSI SQL,但我可以翻译其他语言(如python与pandas),如果你能想到一种方法来做
编辑:为平局打破的情况增加了一行。
2条答案
按热度按时间jdzmm42g1#
如果你想这样做Pandas,你可以这样做:
输出:
决胜局:
添加一行:
然后使用
groupby
、transform
和idxmin
:输出:
jm81lzqq2#
哦,你想要
null
值最少的行。我建议:这是ANSI标准的SQL。