以下链接使用python字典解决了一个非常相似的问题Python:将字典与列表中的列表合并为值并计算它们
我想知道是否可以使用 python pandas 库解决以下问题。我尝试使用合并和加入,但我不确定如何获得所需的结果。
问题如下:
从 2 个 csv 文件中,我在字典中阅读
dict1 = {'M1': {'H': '1', 'J' : '2'}, 'M2': {'H': '1', 'J' : '2'}, 'M3': {'H': '1', 'J' : '2'}}
dict2 = {'M1': {'H': '4', 'J' : '6'}, 'M2': {'H': '2', 'J' : '5'}, 'M4': {'H': '9', 'J' : '8'}}
所需的输出表:
两个字典中所有键的列表及其子字典 [{H,J}] 值的总和,用于两个字典之间的匹配键
示例:M1 存在于 dict1 和 dict2 中,因此 M1 的最终输出应该是
final_M1['H'] = 1(来自 dict1['M1'])+ 4(来自 dict2['M1'])= 5
同样,对于 M3,M3 仅存在于 dict1 中,因此无需执行任何操作并且必须保留这些值。
样本输出:
---------------------
M | H | J
---------------------
M1 | 5 | 8
---------------------
M2 | 3 | 7
---------------------
M3 | 1 | 2
---------------------
M4 | 9 | 8
要获得两个字典的唯一集合,
keys = set(dict1.keys()).union(dict2.keys())
与上面链接中使用的逻辑类似,使用 python 字典的解决方案如下所示:
for k in keys:
print "Key:", k
d1val = dict1.get(k, {})
d2val = dict2.get(k, {})
if (len(d1val) == 0):
print "d2val H:", d2val['H']
if (len(d2val) == 0):
print "d1val H:", d1val['H']
if (len(d1val) != 0 and len(d2val) != 0):
print "Test"
print "d1val H:", d1val['H']
print "d2val H:", d2val['H']
print "d1val H + d2val H = ", int(d1val['H']) + int(d2val['H'])
print "***********"
如何在 python pandas 中实现相同的逻辑?考虑到输入数据集是否在每个文件 10,000 行的范围内,我还想使用 pandas 库进行此类操作是否有效