比较python中sql中的两个列表,并使用pandas.io显示结果
我有一个关于python的问题。我试图比较两个数据帧,检查哪些元素不同,然后将它们插入另一个数据帧。这是我的数据帧。df1:比较python中sql中的两个列表,并使用pandas.io显示结果,python,sql,list,pandas,Python,Sql,List,Pandas,我有一个关于python的问题。我试图比较两个数据帧,检查哪些元素不同,然后将它们插入另一个数据帧。这是我的数据帧。df1: PN Stock WHS Cost 1111 1 VLN 0.2 1111 2 VLN 0.2 1115 1 KNS 0.5 df2: 因此,我们的想法是将df2中尚未在df1中的数据添加到df1中;df2中的第2行
PN Stock WHS Cost
1111 1 VLN 0.2
1111 2 VLN 0.2
1115 1 KNS 0.5
df2:
因此,我们的想法是将df2中尚未在df1中的数据添加到df1中;df2中的第2行在df1中不存在,因此我想插入它。
我应该如何编写代码来查找不存在的行,以便插入它?
我试过:
for index, row in df1.iterrows():
if df2[(df2['PN']==row['PN']) & (df2['Stock'] ==row['Stock']) & (df2['Whs'] = row['Whs']) & (df2['Cost']==row['Cost'])].empty
print row['PN']
检查要更新的行,但我基本上打印了所有行,而不是不匹配的行。我怎样才能解决这个问题?是否可以以某种方式使用“IN”函数,将每个df1行与整个df2进行比较?您可以使用外部连接来实现此结果
pd.concat([df1,df2],join='outer')
有关如何处理索引等的更多选项,我相信您希望执行外部:
列表2中的第2行在列表1中不存在
??是的。只有Time
列不存在…您的问题没有意义。您可以发布所需的输出,并且您在第二个df中声明第2行不存在,但它是杜撰人,更新的问题,现在列表2中的第2行在列表1中不存在
pd.concat([df1,df2],join='outer')
In [29]:
df.merge(df1, how='outer')
Out[29]:
PN Stock WHS Cost Time
0 1111 1 VLN 0.2 15:00
1 1111 2 VLN 0.2 NaN
2 1115 1 KNS 0.5 NaN
3 1111 3 VLN 0.2 16:00