Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中sql中的两个列表,并使用pandas.io显示结果_Python_Sql_List_Pandas - Fatal编程技术网

比较python中sql中的两个列表,并使用pandas.io显示结果

比较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行

我有一个关于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行在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