查找一个.csv文件的列中的值是否在另一个.csv文件中可用

2024-09-26 22:49:50 发布

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

我刚刚开始研究Python

我有两个文件,如下所示

文件-1.txt

ID|NAME|SERVICE
00:11:22:33:44|BTS|24
00:11:22:33:44|EXXO|25
00:11:22:33:44|BP|21
00:11:22:33:44|MNM|2
11:22:33:44:55|BP|21
11:22:33:44:55|KP|3
11:22:33:44:55|SA|33
22:33:44:55:66|BTS|24
33:44:55:66:77|ZZ|242

文件-2.csv

ID,NAME,SERVICE,CONT,NAT
123456,BP,24,NAM,CAN
123456,EXXO,25,NAM,CAN
00:11:22:33:44,BTS,ASI,PAK
00:11:22:33:44,EXXO,ASI,PAK
00:11:22:33:44,BP,ASI,PAK
11:22:33:44:55,BP,AU,NZ
11:22:33:44:55,KP,AU,NZ
11:22:33:44:55,ZA,AU,NZ

我需要找到:

  1. 第一个文件中的哪些ID在第二个文件中可用,并将结果保存为\u First\u Not \u in \u Second.csv中的IDs_

  2. 第二个文件中的哪些ID在第一个文件中可用,并将结果保存为id_in_Second_Not_in_First.csv

  3. 如果两个文件中都有ID,则需要对服务进行验证

结果应该是一个.csv文件,如下所示

ID,NAME,SERVICE,REMARK
00:11:22:33:44,BTS,IN_BOTH
00:11:22:33:44,EXXO,IN_BOTH
00:11:22:33:44,BP,IN_BOTH
00:11:22:33:44,MNM,ONLY_IN_FIRST
11:22:33:44:55,BP,IN_BOTH
11:22:33:44:55,KP,IN_BOTH
11:22:33:44:55,SA,ONLY_IN_FIRST
11:22:33:44:55,ZA,ONLY_IN_SECOND

无法共享代码,因为我所做的大多数编码都给出了错误的结果


Tags: 文件csvnameinidserviceaubts
1条回答
网友
1楼 · 发布于 2024-09-26 22:49:50

尝试对“ID”和“服务”进行外部合并:

out=df1.merge(df2[['ID','SERVICE']],indicator=True,how='outer',on='ID')
d={'both':'IN_BOTH','left_only':'ONLY_IN_FIRST','right_only':'ONLY_IN_SECOND'}
out['_merge']=out['_merge'].map(d)
out=out.drop_duplicates(ignore_index=True).rename(columns={'_merge':'REMARKS'})

out的输出:

    ID              NAME    REMARKS
0   00:11:22:33:44  BTS     IN_BOTH
1   00:11:22:33:44  EXXO    IN_BOTH
2   00:11:22:33:44  BP      IN_BOTH
3   00:11:22:33:44  MNM     IN_BOTH
4   11:22:33:44:55  BP      IN_BOTH
5   11:22:33:44:55  KP      IN_BOTH
6   11:22:33:44:55  SA      IN_BOTH
7   22:33:44:55:66  BTS     ONLY_IN_FIRST
8   33:44:55:66:77  ZZ      ONLY_IN_FIRST
9   123456          NaN     ONLY_IN_SECOND

注:

#df1 is File-1.txt
#df2 is File-2.csv

相关问题 更多 >

    热门问题