【发布时间】:2022-01-16 08:42:36
【问题描述】:
我有一个像下面这样的df
df = pd.DataFrame([[1,1], [2,1], [3,1], [1,2], [2,2], [3,2]], columns = ['Var1', 'Var2'])
Var1 Var2
1 1
2 1
3 1
1 2
2 2
3 2
我想合并 df 并创建一个新变量。在 SQL 中,我将通过以下语句实现它
a.*
,b.var2 as Var3
from df as a
left join
df as b
on a.var1 = b.var1 and a.var2+1 = b.var2
要达到以下效果
Var1 Var2 Var3
1 1 2
2 1 2
3 1 2
1 2
2 2
3 2
在 pandas 中尝试执行此操作时,我使用以下语句
df['Var3'] = df.merge(df['Var2'], how='left', left_on=['Var1', 'Var2'+1], right_on=['Var1', 'Var2'])
但是它向我抛出了下面的错误,因为它认为我想连接“Var2”而不是向它添加 +1。
TypeError: can only concatenate str (not "int") to str
如何在 pandas 的数据框上实现这种条件连接?
谢谢!
【问题讨论】: