首页 > 解决方案 > 在 DataFrame 中查找不被另一个 DataFrames 列中的值打断的连续列值

问题描述

我有两个 DataFrame,如下所示:

df1 = pd.DataFrame({ 
     'id': [1, 3, 6, 9],
     'value' : ['x']*4}) 

Out[1]:

       id   value
       1    x
       3    x
       6    x
       9    x 

df2 = pd.DataFrame({ 
    'id': [4, 10, 12],       
    'value': ['x']*3})

Out[2]:

       id   value
       4    x
       10   x
       12   x 

我想df1用不中断的连续 ID 填充 DataFrame,但df2.

输出应如下所示:

Out[3]:

       id   value
       1    x
       2    Nan
       3    x
       6    x
       7    Nan
       8    Nan
       9    x       

请注意,id 4 和 5 被跳过,因为df2id 4 中断了此处的连续流。

标签: pythonpandas

解决方案


只需制作一个包含布尔值的循环,可能没有你想要的那么快,但它可以解决问题

a = [1,3,6,9]
b = [4,10,12]

add_id = True
result = []
for i in range(a[0], a[-1] + 1):
    if i in a:
        add_id = True
    if i in b:
        add_id = False
    if add_id:
        result.append(i)

output: [1, 2, 3, 6, 7, 8, 9]

推荐阅读