我有以下字典:
dct = { (1/1 , 2/1, 'AAPL') : pd.DataFrame({'aapl' : [1,2,3]}),
(1/1, 2/1 , 'XOM') : pd.DataFrame({'xom' : [4,5,6]}) }
我想要做的是根据密钥的前2个值来连接数据帧(例如,如果1/1和2/1是密钥之间的匹配,那么将这些帧连接起来).
结果应如下所示:
dct = { (1/1 , 2/1) : pd.DataFrame({'aapl' : [1,2,3], 'xom' : [4,5,6] })
最佳答案 我的建议是为每个键组合收集一个数据帧列表,然后为每个组连接一次.
当我迭代字典时,我不会连接,因为这将是昂贵和不必要的.换句话说,对于一个元组密钥连接20次比连接20个数据帧的列表一次更昂贵.
import pandas as pd
from collections import defaultdict
dct = { ('1/1', '2/1', 'AAPL') : pd.DataFrame({'aapl' : [1,2,3]}),
('1/1', '2/1', 'XOM') : pd.DataFrame({'xom' : [4,5,6]}) }
d = defaultdict(list)
for k, v in dct.items():
d[(k[0], k[1])].append(v)
res = {k: pd.concat(v, axis=1) for k, v in d.items()}
# {('1/1', '2/1'): aapl xom
# 0 1 4
# 1 2 5
# 2 3 6}