我有这个pandas数据框:
from numpy import nan
import pandas as pd
data = {'A': {0: 1, 1: 2, 2: 1, 3: 2}, 'B': {0: 0.1, 1: 0.5, 2: 0.1, 3: 0.5},
'C1': {0: 9.0, 1: 9.0, 2: nan, 3: nan}, 'C2': {0: 9.0, 1: 9.0, 2: nan, 3: nan}, 'D1': {0: nan, 1: nan, 2: 6.0, 3: 6.0}, 'D2': {0: nan, 1: nan, 2: 6.0, 3: 6.0}}
data = pd.DataFrame(data)
出来的是:
A B C1 C2 D1 D2
0 1 0.1 9.0 9.0 NaN NaN
1 2 0.5 9.0 9.0 NaN NaN
2 1 0.1 NaN NaN 6.0 6.0
3 2 0.5 NaN NaN 6.0 6.0
现在显然可以整合这个数据框,因为它被不必要地阻止了。预期结果是:
A B C1 C2 D1 D2
0 1 0.1 9.0 9.0 6.0 6.0
1 2 0.5 9.0 9.0 6.0 6.0
一般来说,我谈的是大多数列已完成或随机丢失的数据框,但数据框中存在可以安全合并的这种类型的被阻止的非随机缺失结构。问题是我们事先不知道哪些列要聚合。怎么处理它?</ p>
答案 0 :(得分:1)
扩展Wen's answer,您需要确定哪些列不为空,然后groupby
确定哪些列:
data.groupby(
data.columns[data.notnull().all()].tolist(), as_index=False
).first()
A B C1 C2 D1 D2
0 1 0.1 9.0 9.0 6.0 6.0
1 2 0.5 9.0 9.0 6.0 6.0