Pandas SAS将数据集设置为Python
我有两个sas数据集,我使用SET语句通过一个键列将它们组合成一个新的数据集。 以下是数据的外观注意:“.”是缺少的值或空值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
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