Concat python值基于python dict中的类似键

我有以下字典:

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}
点赞