在熊猫数据框中按组分组数据

时间:2019-05-28 16:27:09

标签: python pandas

我需要使用组和三个条件规则对数据框进行子集化。如果组中“值”列中的所有值都不为零,则需要保留该组的第一行。如果在一个组中,“值”列中的所有值都不是无,则需要保留所有值。如果在组中“值”列中的某些值不存在,而其他值则不存在,则需要删除所有不存在的行。区域和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],
})

1 个答案:

答案 0 :(得分:2)

只需遵循您的逻辑并使用{​​{1}}

groupby