gpt4 book ai didi

python - 在多个条件下匹配 2 个 dfs

转载 作者:行者123 更新时间:2023-12-01 08:07:36 32 4
gpt4 key购买 nike

我试图根据2个条件从df2获取df1的相应值。这是 2 个 dfs。df1:

    name value1
0 abc 3
1 cde 1
2 cde 4
3 ijk 6

df2:

    name value1 value2
0 abc 3 5
1 cde 3 5
2 cde 1 1
3 ijk 2 3

我想在 df1 中获取名称匹配且已验证 df1.value1. Between(df2.value1, df2.value2) 的 df2.value2

我已经尝试过:

df1['value2'] = df2[(df2['name']==df1['name'])(df1['value1'].between(df2['value1']., df2['value2']))]['value2']

但是运气不好..你们有什么建议吗?

在这里您可以看到我在 df1 上的预期输出:

    name value1 value2
0 abc 3 5
1 cde 1 1
2 cde 4 5
3 ijk 6 nan

最佳答案

您需要将两列合并在一起,然后按 Between进行过滤,如果需要,对于不匹配的值缺少值,请使用左连接添加合并:

print (df1)
name value1 col
0 abc 3 1
1 cde 1 5
2 cde 4 7
3 ijk 6 3


df = df1.merge(df2, on='name', how='outer', suffixes=('','_'))

df = df[df.value1.between(df.value1_, df.value2)]
df = df1.merge(df[df2.columns], how='left')
print (df)
name value1 col value2
0 abc 3 10 5.0
1 cde 1 50 1.0
2 cde 4 70 5.0
3 ijk 6 30 NaN

关于python - 在多个条件下匹配 2 个 dfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468314/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com