从另一个数据帧的多列中的一个数据框中查找值?

时间:2017-08-02 20:01:44

标签: pandas dataframe

我目前有一个数据框(df1),其中一列是数字列表。我想在另一个具有两个整数列的数据帧(df2)中查找这些数字,并查看df1中的数字是否介于这两列的范围之间,并从匹配的行中获取数据。以下是我目前的方法,有更好的方法吗?

b== false

这是df1的头像:

for index, row in df1.iterrows():
    print df2[(df2['start'] <=  row['num']) & (df2['end'] >= row['num'])]['data'].iloc[0]

df2的负责人:

           num
0  1216942535
1  1220432129
2  1501931542

1 个答案:

答案 0 :(得分:2)

.loc和布尔数组逻辑的基本用法:

# parentheses are mandatory here
result = df2.loc[(df1.num < df2.end) & (df1.num > df2.start), "organization_name"]

使用最小的Wirking测试示例:

df1 = pd.DataFrame(np.random.randint(0, 10, 5))

df2 = pd.DataFrame({
        "orgname": [str(i) for i in range(5)], 
        "start": np.random.randint(-5, 5, 5), 
        "end": np.random.randint(5, 15, 5)
    })[["orgname", "start", "end"]]
df2.loc[(df1[0] < df2.end) & (df1[0] > df2.start), "orgname"]