如何让pandas列比较检查单元格?

时间:2017-08-03 05:34:36

标签: python pandas

我有两个文件。 a.txt包含以下数据。

Zone,Aliase1,Aliase2
VNX7600SPB3_8B3_H1,VNX7600SPB3,8B3_H1
VNX7600SPBA_8B4_H1,VNX7600SPA3,8B4_H1
CX480SPA1_11B3_H1,CX480SPA1,11B3_H1
CX480SPB1_11B4_H1,CX480SPB1,11B4_H1

b.txt包含以下数据。

Zone,Aliase1,Aliase2
VNX7600SPB3_8B3_H1,VNX7600SPB3,8B3_H1
CX480SPA1_11B3_H1,CX480SPA1,11B3_H1

我想得到关于比较两个文件区域列的结果,如下所示。

Zone,Aliase1,Aliase2,Status
VNX7600SPB3_8B3_H1,VNX7600SPB3,8B3_H1,Active
VNX7600SPBA_8B4_H1,VNX7600SPA3,8B4_H1,Not used
CX480SPA1_11B3_H1,CX480SPA1,11B3_H1,Active
CX480SPB1_11B4_H1,CX480SPB1,11B4_H1,Not used

我怎样才能取得成果。 我尝试过使用熊猫。但我无法取得成果。 请帮帮我。

1 个答案:

答案 0 :(得分:2)

我认为您需要merge使用外部联接和参数indicator=True,然后rename列名称和map 3个可能的值(both,{{1 }和left_only):

right_only

如果您只想按#if no 'on' parameter, merge all columns df = pd.merge(df1, df2, how='outer', indicator=True) df = df.rename(columns={'_merge':'status'}) d = {'left_only':'Not used', 'both':'Active', 'right_only':'b_file_only'} df['status'] = df['status'].map(d) print (df) Zone Aliase1 Aliase2 status 0 VNX7600SPB3_8B3_H1 VNX7600SPB3 8B3_H1 Active 1 VNX7600SPBA_8B4_H1 VNX7600SPA3 8B4_H1 Not used 2 CX480SPA1_11B3_H1 CX480SPA1 11B3_H1 Active 3 CX480SPB1_11B4_H1 CX480SPB1 11B4_H1 Not used 列进行比较,请添加参数Zone并按on列按子集(df2)进行过滤:

[[]]