我需要使用组和三个条件规则对数据框进行子集化。如果组中“值”列中的所有值都不为零,则需要保留该组的第一行。如果在一个组中,“值”列中的所有值都不是无,则需要保留所有值。如果在组中“值”列中的某些值不存在,而其他值则不存在,则需要删除所有不存在的行。区域和ID列共同在数据框中定义了唯一的组。
我的第一种方法是将数据帧分为两个块。第一个块是行,其中对于一个组,所有行都为空。第二块是其他所有内容。对于一组行包含所有空值的数据块,我将使用按组的行累积计数创建行号,并查询累积计数= 1的行。对于第二块,我将删除Value为空值。然后,我将追加数据框。
示例源数据框
dfInput = pd.DataFrame({
'Region': [1, 1, 2, 2, 2, 2, 2],
'ID': ['A', 'A', 'B', 'B', 'B', 'A', 'A'],
'Value':[0, 1, 1, None, 2, None, None],
})
所需的输出数据帧:
dfOutput = pd.DataFrame({
'Region': [1, 1, 2, 2, 2],
'ID': ['A', 'A', 'B', 'B', 'A'],
'Value':[0, 1, 1, 2, None],
})
答案 0 :(得分:2)
只需遵循您的逻辑并使用{{1}}
groupby