合并时间序列数据,以便将列值拟合到字典中



我有两个时间序列数据帧,它们在相同的时间内跟踪相同的特定国家,但它们为每次观测跟踪的变量代表了截然不同的东西。例如,第一个数据帧是这样的:

跟踪变量"A":

2020年3月1日
国家 2020年1月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

最新更新