我有两个时间序列数据帧,它们在相同的时间内跟踪相同的特定国家,但它们为每次观测跟踪的变量代表了截然不同的东西。例如,第一个数据帧是这样的:
跟踪变量"A":
国家 | 2020年1月1日 | 2020年3月1日tbody> | |||||
---|---|---|---|---|---|---|---|
AFG | 0 | 0 | 1 | 5000 | |||
CHN | 0 | 20 | 50 | 0 | |||
美国 | 1 | 2 | 4 | 1000 |
代码
pd.concat([df1, df2]).groupby('Country').agg(list).applymap(
lambda x: dict(zip(['A','B'], [*x]))).reset_index()
输出
Country 01/01/2020 01/02/2020 01/03/2020 04/25/2021
0 AFG {'A': 0, 'B': 10} {'A': 0, 'B': 10} {'A': 1, 'B': 0} {'A': 5000, 'B': 0}
1 CHN {'A': 0, 'B': 1} {'A': 20, 'B': 1} {'A': 50, 'B': 1} {'A': 0, 'B': 20}
2 USA {'A': 1, 'B': 0} {'A': 2, 'B': 7} {'A': 4, 'B': 10} {'A': 10000, 'B': 543}
解释
我们首先使用pd.concat.连接两个dfs
然后,我们使用groupby按国家对结果df进行分组。
在分组的df上使用agg进行聚合,以创建基于Country
的项目列表。
然后,我们使用applymap 映射列表项以创建一个以A and B
为密钥的dict