gpt4 book ai didi

Pandas :比较多列以合并数据框

转载 作者:行者123 更新时间:2023-12-01 12:09:02 25 4
gpt4 key购买 nike

我有两个比这大得多的数据框,但它们的形式是:

df1 = pd.DataFrame({'col1': ['a', 'b', 'b', 'c'],
'start': [1, 5, 10, 15],
'end': [4, 9, 14, 19]})
df2 = pd.DataFrame({'col1': ['a', 'b', 'b', 'c'],
'value': [2, 6, 12, 20],
'etc': [1, 2, 3, 4]})

我想根据按此顺序检查两件事来合并它们:1) col1 匹配,2) valuestart 之间> 和 结束。我在想类似的东西(但第一个 == 行不起作用):

if df1.col1 == df2.col1:
if df1.start < df2.value < df1.end:
df1.merge(df2)

不过,我不知道这是否会根据 df2 中的所有行检查 df1 中的所有行?这个例子的期望输出是:

dfoutput = pd.DataFrame({'col1': ['a', 'b', 'b'],
'start': [1, 5, 10],
'end': [4, 9, 14],
'value': [2, 6, 12],
'etc': [1, 2, 3]})

最佳答案

可以先合并检查值,

new_df = df1.merge(df2)
new_df.where(new_df.value.between(new_df.start, new_df.end)).dropna()


col1 start end value etc
0 a 1.0 4.0 2.0 1.0
1 b 5.0 9.0 6.0 2.0
4 b 10.0 14.0 12.0 3.0
5 c 15.0 19.0 16.0 4.0

关于 Pandas :比较多列以合并数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984080/

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