首页 > 解决方案 > 为什么 where 子句在 pandas 中不起作用?

问题描述

鉴于此,我有 2 个数据集,如下所示:

import pandas as pd
import numpy as np

dict1 = {
    "A" : range(1,6),
    "B": np.random.randint(1,10,5)
}

dt1 = pd.DataFrame(dict1)

dict2 = {
    "A" : range(1,6),
    "K" : np.random.randint(3,8,5),
    "Size of Sessile in Words": ["Small","Small","Medium","Large","Medium",]
}

dt2 = pd.DataFrame(dict2)

我正在尝试join这两个数据框,但也使用了一个Where子句:

size = "Small"
dt = dt1.merge(dt2, on='A').query('"Size of Sessile in Words" == {size}'.format(size) )

但是,它抱怨:

KeyError: 'size'

问题是什么?

标签: pythonpandas

解决方案


您需要对带有空格的列使用反引号并使用@size您定义的变量:

dt = dt1.merge(dt2, on='A').query('`Size of Sessile in Words`==@size')

   A  B_x  B_y Size of Sessile in Words
0  1    3    5                    Small
1  2    2    5                    Small

推荐阅读