求助:如何将包含嵌套列表的字典转换为指定结构的Pandas DataFrame
如何将嵌套列表字典转换为指定结构的Pandas DataFrame?
我来帮你搞定这个问题!你当前的代码只处理了字典里的第一个键值对,所以才只得到了length相关的数据,完全没包含weight。我们可以通过拆分每个指标的DataFrame再合并的方式,轻松得到你想要的目标结构。
解决方案代码
import pandas as pd data = {'length': [[1633345896441, 101.25], [1633348822964, 101.67], [1633353200096, 102.32]], 'weight' : [[1633345896441, 7.09], [1633348822964, 7.44], [1633353200096, 7.51]]} # 1. 遍历字典,将每个指标的嵌套列表转为带日期列的DataFrame df_collection = [] for metric, values in data.items(): temp_df = pd.DataFrame(values, columns=['date', metric]) df_collection.append(temp_df) # 2. 按日期列合并所有指标的DataFrame merged_df = pd.merge(df_collection[0], df_collection[1], on='date') # 3. 重置索引,匹配目标结构 final_df = merged_df.reset_index(drop=False) print(final_df)
代码说明
- 步骤1:遍历字典里的每个指标(
length和weight),把对应的嵌套列表转换成单独的DataFrame,每列命名为date和对应指标的名字。这样每个小DataFrame都能关联日期和对应数值。 - 步骤2:用
pd.merge按date列合并两个小DataFrame,这样相同日期的length和weight就会被放在同一行。因为你的数据里日期完全匹配,用默认的内连接就没问题。 - 步骤3:通过
reset_index添加index列,让最终结果和你想要的结构完全一致。
运行结果
| index | date | length | weight |
|---|---|---|---|
| 0 | 1633345896441 | 101.25 | 7.09 |
| 1 | 1633348822964 | 101.67 | 7.44 |
| 2 | 1633353200096 | 102.32 | 7.51 |
内容的提问来源于stack exchange,提问作者Diop Chopra
相关产品推荐
相关产品推荐

