【发布时间】:2019-10-14 05:41:51
【问题描述】:
我需要使用组和三个条件规则对数据框进行子集化。如果在一个组中 Value 列中的所有值都没有,我需要保留该组的第一行。如果在一个组中 Value 列中的所有值都不是无,我需要保留所有值。如果在一个组中,Value 列中的某些值是 none 而其他不是 none,我需要删除所有没有的行。列 Region 和 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],
})
【问题讨论】: