Python 合并词典列表

Python 合并词典列表,python,pandas,dictionary,Python,Pandas,Dictionary,我有下面的列表,其中包含我想要合并的字典,它们本身包含数据帧 ls = [{'varID': 101, 'varDesc': 'Description of variable 101', 'values': df101}, {'varID': 102, 'varDesc': 'Description of variable 102', 'values': df102}, {'varID': 103, 'varDesc': 'Description of variable

我有下面的列表,其中包含我想要合并的字典,它们本身包含数据帧

ls = [{'varID': 101, 'varDesc': 'Description of variable 101', 'values': df101},
      {'varID': 102, 'varDesc': 'Description of variable 102', 'values': df102},
      {'varID': 103, 'varDesc': 'Description of variable 103', 'values': df103}]
其中,df101、df102和df103都是x x x 1的数据帧,其中日期值作为名为“refPer”的索引,列名称为所有数据帧中的“values”。注意:对于所有日期框,x的大小都不相同

我希望合并数据帧,并尝试了以下操作:

mergedDF = reduce(lambda x,y: pd.merge(x.get('values'),y.get('values'), how = 'outer', on = 'refPer'), ls)
但是,我得到以下错误:

ValueError: can not merge DataFrame with instance of type <class 'NoneType'>
任何帮助都将不胜感激

提前感谢您

您可以使用concat连接长度不等的数据帧。还可以提供参数键,为要连接的每个数据帧命名。您将创建一个多索引,但如果不需要,可以删除原始级别:

df = pd.concat([x['values'] for x in ls], axis=1, keys=[x['varID'] for x in ls])
df.columns = df.columns.droplevel(1)  # removes 'original' level

我收到一个错误,说键部分的语法无效。这最终起作用了。mergedDF=pd.concat[x['values']表示ls中的x],axis=1,keys='refPer'@jmaval很好,如果不需要这些键,也可以将其删除。我不知道为什么另一种方法对你不起作用。