在条件[python]下从另一个数据帧向一个数据帧添加新行

2024-06-30 16:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个csv文件,我试图结合他们在一个条件的基础上

它们都有“Import\u ID”列,为每一行提供唯一的ID。 我需要做的是检查df1的Import\u ID是否已经存在于df2中,如果不存在,则添加此行,否则跳过它。最好不要使用循环或iterrows()

df1
 Import_ID            State                  ProductName
0     7027514279_100    716        TRANSCEND ESD220C 240GB SSD extern
1   7027514279_200.1    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
2   7027514279_200.2    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
3   7027514279_200.3    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
4   7027514279_200.4    716        INTELLINET 48,3cm 19Zoll Steckdosenleist

and df2
   Import_ID          State                  ProductName
0     7027329459_100    716        BROTHER MFCJ6530DW MULTI-FUNCTION (AT)
1   7027514279_200.2    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
2   7027514279_200.3    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
3     7027329459_400    716        BROTHER LC-3219XLY Tinte Gelb (1500 S)
4     7027329459_500  20010        BROTHER LC-3219XLBK Tinte Schwarz

我想要的是,只有当df1行的导入ID在df2中不存在时,才会导入df1行

df2 updated:
 Import_ID          State                  ProductName
0     7027329459_100    716        BROTHER MFCJ6530DW MULTI-FUNCTION (AT)
1   7027514279_200.2    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
2   7027514279_200.3    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
3     7027329459_400    716        BROTHER LC-3219XLY Tinte Gelb (1500 S)
4     7027329459_500  20010        BROTHER LC-3219XLBK Tinte Schwarz
5     7027514279_100    716        TRANSCEND ESD220C 240GB SSD extern
6   7027514279_200.1    716        INTELLINET 48,3cm 19Zoll Steckdosenleist
7   7027514279_200.4    716        INTELLINET 48,3cm 19Zoll Steckdosenleist

因此在这个例子中,df1行1和2没有被复制,因为它们已经存在了

我尝试创建一个临时文件,在其中存储df1中所有在df2中不存在的行,但它不起作用

temp = numpy.where(file_in['Import_ID'] not in finalData['Import_ID'], file_in)

我不知道我还应该尝试什么,因为我对python还很陌生


Tags: inimportiddf1lcstatessddf2