gpt4 book ai didi

python - Pandas .dropna() 在指定属性上

转载 作者:太空狗 更新时间:2023-10-30 00:54:16 26 4
gpt4 key购买 nike

我有这段代码可以从 Type 列中删除空值,特别是查看 Dog。

cd.loc[cd['Type'] == 'Dog'].dropna(subset = ['Killed'], inplace = True)

当与 Type = Dog 关联的 ['Killed'] 列具有 NaN 值时,我想删除 na。

上面的代码产生了这个 pandas 错误:

 A value is trying to be set on a copy of a slice from a DataFrame

当 ['Type'] == 'Dog' 时,还有其他方法可以在 ['Killed'] 上放置吗?

(这是我的第一篇文章),如果我不能正确解释,请原谅干杯

最佳答案

与@BrenBarn 的回答非常相似,但使用了 dropinplace

cd.drop(cd[(cd.Type == 'Dog') & (cd.Killed.isnull())].index, inplace=True)

设置

cd = pd.DataFrame([
['Dog', 'Yorkie'],
['Cat', 'Rag Doll'],
['Cat', None],
['Bird', 'Caique'],
['Dog', None],
], columns=['Type', 'Killed'])

解决方案

cd.drop(cd[(cd.Type == 'Dog') & (cd.Killed.isnull())].index, inplace=True)

cd

enter image description here


等价于德摩根定律

cond1 = cd.Type == 'Dog'
cond2 = cd.Killed.isnull()
cd[~cond1 | ~cond2]

一个愚蠢的,因为我喜欢它!

cd.groupby('Type', group_keys=False) \
.apply(lambda df: df.dropna(subset=['Killed']) if df.name == 'Dog' else df)

关于python - Pandas .dropna() 在指定属性上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241346/

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