我从csv文件创建了两个字典(请参见下面的文件):
a_data = {
'78567908': {'26.01.21', '02.03.24', '26.01.12', '02.03.01', '04.03.03', '01.01.13', '01.01.10', '26.01.17'},
'85789070': {'02.03.17', '02.05.01', '02.05.04', '26.01.02', '09.01.04'},
'87140110': {'03.15.19', '03.15.25', '03.15.24'},
'87142218': {'26.17.13', '02.03.22', '02.11.01'},
'87006826': {'28.01.03'}
}
p_data = {
'78567908': {'24.11.01', '26.01.21', '24.11.02', '02.03.24', '02.03.01', '04.03.03', '01.01.13', '26.01.18', '01.01.10'},
'85789070': {'02.05.05', '02.03.17', '02.05.24', '02.05.01', '02.05.04', '26.01.02', '09.01.04'},
'87140110': {'03.15.19', '03.15.25', '03.15.10', '03.15.24'},
'87142218': {'26.17.13', '02.03.22', '02.11.01', '02.03.02', '02.03.24', '02.11.13'},
'87006826': {'28.01.03'}
}
我正在尝试将p_data
与a_data
进行比较。 我想知道a_data
和p_data
中的每个键,交集是什么,a_data
中是什么值,p_data
中不是。
对于键78567908
,p_data
具有8个值中的6个。常用值为
01.01.10
01.01.13
02.03.01
02.03.24
04.03.03
26.01.21
,缺少的值是
26.01.12
26.01.17
csv文件如下:
78567908,01.01.10,01.01.13,02.03.01,02.03.24,04.03.03,26.01.12,26.01.17,26.01.21
85789070,02.03.17,02.05.01,02.05.04,09.01.04,26.01.02
87140110,03.15.19,03.15.24,03.15.25
87142218,02.03.22,02.11.01,26.17.13
87006826,28.01.03
我使用以下代码创建了字典:
a_data = {}
with open(cvsfile) as fin:
reader = csv.reader(fin, skipinitialspace=True)
for row in reader:
a_data[row[0]]=set(row[1:])
如果有比字典(如数据框)更好的方法来获得同一产品,我将接受它作为答案。到目前为止,我仅设法创建了两个字典或数据框,但是在比较两个字典/数据框方面没有任何进展。
答案 0 :(得分:0)
您可以使用熊猫来尝试:
import pandas as pd
a_data = {'78567908': {'26.01.21', '02.03.24', '26.01.12', '02.03.01', '04.03.03', '01.01.13', '01.01.10', '26.01.17'}, '85789070': {'02.03.17', '02.05.01', '02.05.04', '26.01.02', '09.01.04'}, '87140110': {'03.15.19', '03.15.25', '03.15.24'}, '87142218': {'26.17.13', '02.03.22', '02.11.01'}, '87006826': {'28.01.03'}}
p_data = {'78567908': {'24.11.01', '26.01.21', '24.11.02', '02.03.24', '02.03.01', '04.03.03', '01.01.13', '26.01.18', '01.01.10'}, '85789070': {'02.05.05', '02.03.17', '02.05.24', '02.05.01', '02.05.04', '26.01.02', '09.01.04'}, '87140110': {'03.15.19', '03.15.25', '03.15.10', '03.15.24'}, '87142218': {'26.17.13', '02.03.22', '02.11.01', '02.03.02', '02.03.24', '02.11.13'}, '87006826': {'28.01.03'}}
a = pd.DataFrame.from_dict(a_data, orient='index')
p = pd.DataFrame.from_dict(p_data, orient='index')
a.apply(lambda x: sum(i in p.loc[x.name,:].tolist() for i in x.dropna()), axis=1)
输出:
78567908 6
85789070 5
87140110 3
87142218 3
87006826 1
dtype: int64