【发布时间】:2022-11-10 20:30:08
【问题描述】:
我想合并'key1'和'key2'列上的两个数据集,以便在缺少值的情况下,例如,在'key2'列中,它将采用属于第一个键的第二个键的所有组合。这是一个例子:
def merge_nan_as_any(mask, data, on, how)
...
mask = pd.DataFrame({'key1': [1,1,2,2],
'key2': [None,3,1,2],
'value2': [1,2,3,4]})
data = pd.DataFrame({'key1': [1,1,1,2,2,2],
'key2': [1,2,3,1,2,3],
'value1': [1,2,3,4,5,6]})
result = merge_nan_as_any(mask, data, on=['key1', 'key2'], how='left')
result = pd.DataFrame({'key1': [1,1,1,1,2,2],
'key2': [1,2,3,3,1,2],
'value2': [1,1,1,2,3,4],
'value1': [1,2,3,3,4,5]})
第二个键有一个缺失值,因此它从第二个数据集中获取满足条件的所有行:key1 必须等于 1,key2 是第二个数据集中的任何第二个键值。怎么做?
我想到的第一个明显的解决方案是遍历第一个数据集并过滤出满足条件的组合,第二个是将第一个数据集拆分为多个数据集,以便它们在同一列中具有 NaN 并合并每个它们在具有值的列上。
但我不喜欢这些解决方案,并猜测有更优雅的方式来做我想做的事。
我将不胜感激任何帮助!
【问题讨论】: