Pandas SAS将数据集设置为Python

Pandas SAS将数据集设置为Python,pandas,merge,concatenation,Pandas,Merge,Concatenation,我有两个sas数据集,我使用SET语句通过一个键列将它们组合成一个新的数据集。 以下是数据的外观注意:“.”是缺少的值或空值 data1 data2 ID X Y ID X Z 01 12 11 01 . 4 02 15 . 03 17 6 03 18 . data combine; set data1 data2; by id; run; 输出数据集“combine”的结果如下: combine ID X Y

我有两个sas数据集,我使用SET语句通过一个键列将它们组合成一个新的数据集。 以下是数据的外观注意:“.”是缺少的值或空值

data1       data2  
ID X  Y     ID  X  Z
01 12 11    01  .  4
02 15 .     03 17  6
            03 18  .

data combine;
set data1 data2;
by id;
run;
输出数据集“combine”的结果如下:

combine
ID  X  Y  Z
01 12  11  .
01 .   .   4
02 15  .   .
03 17  .   6
03 18  .   .
有人能告诉我如何在Pandas/Python中实现这一点吗。 我试着使用pd.concat,但这并没有提供上述所需的输出。如果有人能帮忙,我将不胜感激。

concat 追加 对评论的回应
抱歉…基本上,我只需要一个“标志”来指示来自“data1”和“data2”的数据。简单地说,创建一个名为“flag”的新变量,如果数据来自data1,则将其赋值为1,并为来自data2的数据赋值为2。希望一切都清楚……再次感谢!——用户11580242

你可以用concat

海螺 追加 对评论的回应
抱歉…基本上,我只需要一个“标志”来指示来自“data1”和“data2”的数据。简单地说,创建一个名为“flag”的新变量,如果数据来自data1,则将其赋值为1,并为来自data2的数据赋值为2。希望一切都清楚……再次感谢!——用户11580242

你可以用concat


谢谢你。。如果我想设置标志来识别它是来自第一个数据集还是第二个数据集,请让我知道我如何做到这一点。数据合并;设置data1in=a data2in=b;按身份证;如果一个源=1;如果b,则源=2;跑那对我要求太高了。我尽量避免SAS。提出另一个问题,并以与此问题类似的方式提出。意思是,显示你拥有的和你期望的。对不起…基本上,我只需要一个“标志”来指示来自“data1”和“data2”的数据。简单地说,创建一个名为“flag”的新变量,如果数据来自data1,则将其赋值为1,并为来自data2的数据赋值为2。希望一切都清楚…再次感谢!我用可能有用的信息更新了我的帖子。太好了。这很有效…非常感谢!谢谢你。。如果我想设置标志来识别它是来自第一个数据集还是第二个数据集,请让我知道我如何做到这一点。数据合并;设置data1in=a data2in=b;按身份证;如果一个源=1;如果b,则源=2;跑那对我要求太高了。我尽量避免SAS。提出另一个问题,并以与此问题类似的方式提出。意思是,显示你拥有的和你期望的。对不起…基本上,我只需要一个“标志”来指示来自“data1”和“data2”的数据。简单地说,创建一个名为“flag”的新变量,如果数据来自data1,则将其赋值为1,并为来自data2的数据赋值为2。希望一切都清楚…再次感谢!我用可能有用的信息更新了我的帖子。太好了。这很有效…非常感谢!
pd.concat([data1, data2], ignore_index=True).sort_values('ID')

   ID     X     Y    Z
0  01  12.0  11.0  NaN
2  01   NaN   NaN  4.0
1  02  15.0   NaN  NaN
3  03  17.0   NaN  6.0
4  03  18.0   NaN  NaN
data1.append(data2, ignore_index=True).sort_values('ID')

   ID     X     Y    Z
0  01  12.0  11.0  NaN
2  01   NaN   NaN  4.0
1  02  15.0   NaN  NaN
3  03  17.0   NaN  6.0
4  03  18.0   NaN  NaN
pd.concat({1: data1, 2: data2}, names=['flag']).reset_index('flag').sort_values('ID')

   flag  ID     X     Y    Z
0     1  01  12.0  11.0  NaN
0     2  01   NaN   NaN  4.0
1     1  02  15.0   NaN  NaN
1     2  03  17.0   NaN  6.0
2     2  03  18.0   NaN  NaN