我目前有一个数据框(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
答案 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"]