我有一个数据框

   A  B     C
0  1  2  None
1  1  3   XYZ
2  5  4   abc

我正在try 删除基于GROUPBY COL:A的所有行,如果任意值为NONE,则删除整个组

预期yields

   A  B    C
0  5  4  abc

这就是我正在努力做的事情

import pandas as pd

# Create the dataframe
df = pd.DataFrame({
    'A': [1, 1, 5],
    'B': [2, 3, 4],
    'C': [None, 'XYZ', 'abc']
})
print(df)
# Group by column A and drop any rows with null values
df = df.groupby('A').apply(lambda x: x.dropna() if x.notnull().all().all() else pd.DataFrame())

# Reset the index of the resulting dataframe
df = df.reset_index(drop=True)

# Print the resulting dataframe
print(df)

但我得到的是:

     A    B    C
0  5.0  4.0  abc

为什么要将这些值转换为浮点数?我不希望那样的事情发生

推荐答案

正如Quang Hoang在 comments 中提到的,问题出在您的应用代码上.为什么不试着用groupbytransform制作一个这样的面具呢:

df[df['C'].notna().groupby(df['A']).transform('all')]

   A  B    C
2  5  4  abc

如果需要,您可以在结果上拨打.reset_index.


另一种类似的方法是:

df[df.set_index('A')['C'].notna().groupby(level=0).transform('all')]

如果需要判断所有列的空性,则可以将其推广到多个列:

df[df.set_index('A').notna().all(axis=1).groupby(level=0).transform('all')]

   A  B    C
2  5  4  abc

Python相关问答推荐

如何从同一类的多个元素中抓取数据?

从单个列创建多个列并按pandas分组

删除pandas rame时间序列列中未更改的值

这家einsum运营在做什么?E = NP.einsum(aj,kl-il,A,B)

如何终止带有队列的Python进程?+ 队列大小的错误?

遵循轮廓中对象方向的计算线

在使用Guouti包的Python中运行MPP模型时内存不足

添加包含中具有任何值的其他列的计数的列

三个给定的坐标可以是矩形的点吗

如何在msgraph.GraphServiceClient上进行身份验证?

如何将双框框列中的成对变成两个新列

未删除映射表的行

如何使用html从excel中提取条件格式规则列表?

为什么默认情况下所有Python类都是可调用的?

计算组中唯一值的数量

Julia CSV for Python中的等效性Pandas index_col参数

在vscode上使用Python虚拟环境时((env))

在含噪声的3D点网格中识别4连通点模式

使用特定值作为引用替换数据框行上的值

matplotlib图中的复杂箭头形状