我有两个 Dataframe 如下,
DF1
Name;ID;Course;SID;Subject
Alex;A1;Under;;chemistry
Oak;A2;Under;;chemistry
niva;A3;grad;;physics
mark;A4;Under;;Med
DF2
PID;ServiceId;Address;Active
A1;svc1;WI;Yes
A2;svc2;MI;Yes
A3;svc2;OH;Yes
我希望使用ID和PID列从DF2.ServiceId填充SID的 Dataframe 。预期输出如下
DF3
Name;ID;Course;SID;Subject
Alex;A1;Under;svc1;chemistry
Oak;A2;Under;svc2;chemistry
niva;A3;grad;svc3;physics
mark;A4;Under;;Med
我尝试了下面的,但它显示了来自两个 Dataframe 的所有列。
DF3 = DF1.merge(DF2, how='inner', left_on="ID", right_on="PID")
3条答案
按热度按时间mklgxw1f1#
这似乎是一个简单的合并得到的答案。尝试在合并中使用
how="left"
,因为您希望填充第一个 DataframeDF1
(即在合并之前保留 Dataframe 中的所有其它值相同)。我已经做了一些
rename
来获得确切的列名。奥普特
s1ag04yj2#
看起来最直接的方法是根据
df1['ID']
与df2['PID']
重新索引df2['ServiceId']
(实际上是连接),然后将结果值分配给SID
。不过,我觉得有更简洁的写法。3ks5zfa03#
您可以使用
pandasql
并执行SQL左连接。如果在执行此查询时收到
Object Not Executable Error: Not an executable object
错误,请检查您的pandasql
和sqlalchemy
版本。您可能需要专门安装sqlalchemy-1.4.46,因为目前pandasql-0.7.3和sqlalchemy-2.0.15有一个bug。