Python 中是否有相当于 SAS 合并的功能?

问题描述 投票:0回答:1

我正在将 SAS 代码转换为 python,但我在 Python 中找不到与此连接方法等效的任何内容?

data have_a;
input ID amount_a;
datalines;
1 10
1 15
1 20
1 30
2 10
; 

data have_b;
   input ID amount_b;
   datalines;
1 12
1 14
2 12
2 14
;

data want;
  merge have_a(in=inA) have_b(in=inb);
  by id;
  if inA and inB;
run;

输出;

ID  amount_a  amount_b
1   10  12
1   15  14
1   20  14
1   30  14
2   10  12
2   10  14

我尝试过 pd.concat 和 merge 方法,但无法获得上述结果。有没有直接的方法可以在Python中做到这一点? 我试过了;

df1 = pd.DataFrame({'ID': [1, 1, 1, 1, 2], 'A': [10, 15, 20, 30, 10]})

df2 = pd.DataFrame({'ID': [1, 1, 2, 2], 'B': [12, 14, 11, 13]})
pd.concat([df1, df2], axis=1)

输出;

 ID   A   ID     B
0   1  10  1.0  12.0
1   1  15  1.0  14.0
2   1  20  2.0  11.0
3   1  30  2.0  13.0
4   2  10  NaN   NaN
python merge sas concatenation
1个回答
0
投票

如果您不介意不从较短的数据集中继承最后一个观察值,则只需为每个数据集(数据框)添加每个组的计数器,并将该变量包含在连接标准中。

但这会使子集标准变得更加困难(至少在 SAS 代码中),因为您希望保留对两个输入都有贡献的组的所有记录。

我将不再生成实际的 python 代码来向其他人实现该逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.