我有2个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
ID X Y Z
01 12 11 .
01 . . 4
02 15 . .
03 17 . 6
03 18 . .有人能让我知道如何用Pandas/Python来完成这个任务吗?我尝试使用pd.concat(),但这并没有提供上面所需的输出。感谢有谁能帮忙。
发布于 2021-03-24 15:44:01
concat
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 NaNappend
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对评论的答复
Sorry...basically,我只需要一个“标志”来表示来自'data1‘和data2的数据。简单地说,创建一个名为“标志”的新变量,如果数据来自data1,则将其赋值给1,并为来自data2的数据分配值2。希望又是clear...Thanks!- user11580242
您可以使用concat
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 NaNhttps://stackoverflow.com/questions/66784459
复制相似问题