gpt4 book ai didi

python - 在 DataFrame 中删除重复项,使行中的空值最少

转载 作者:太空狗 更新时间:2023-10-30 00:31:15 24 4
gpt4 key购买 nike

有了这个 DataFrame:

d = {'A' : pd.Series(['AA', 'AA', 'AA', 'BB','CC'], 
index=['a', 'b', 'c', 'd','e']),
'B' : pd.Series([1., 2., 3.], index=['b', 'd','e']),
'C' : pd.Series([4., 5., 6.], index=['b', 'd', '']),
'D' : pd.Series([1., 2., 3.,4.], index=['a', 'c', 'd','e'])}

In[1]: pd.DataFrame(d)

Out[1]:
A B C D
a AA NaN NaN 1.0
b AA 1.0 4.0 NaN
c AA NaN NaN 2.0
d BB 2.0 5.0 3.0
e CC 3.0 6.0 4.0

我想在 df['A'] 上删除重复项,并在未被删除的列中保留空值最少的行 on

In[2]: pd.DataFrame(d).drop_duplicates(on='A', **magical_answer=True**)

Out[1]:
A B C D
b AA 1.0 4.0 NaN
d BB 2.0 5.0 3.0
e CC 3.0 6.0 4.0

我可以看到,如果有多行的空值最少,可能会出现此示例中未列举的问题,在这种情况下,让 keep : {'first', 'last'} 会很有用 参数。

最佳答案

另一种方法是计算每行中的项目数,对 DataFrame 进行排序并保留最后一项,以便它具有最高计数。

(df.assign(counts=df.count(axis=1))
.sort_values(['A', 'counts'])
.drop_duplicates('A', keep='last')
.drop('counts', axis=1))
Out:
A B C D
b AA 1.0 4.0 NaN
d BB 2.0 5.0 3.0
e CC 3.0 6.0 4.0

关于python - 在 DataFrame 中删除重复项,使行中的空值最少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43769693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com