我有以下包含字典列表的数据

data= [
 {'Time': 18057610.0,
  'Flux': [{'V0': -1.4209e-15},
   {'V1': 2.7353e-16},
   {'V2': 1.1935e-15},
   {'V3': 1.1624},
   {'V4': -6.1692e-15},
   {'V5': 3.2218e-15}]},
 {'Time': 18057620.4,
  'Flux': [{'V0': 2.4377e-16},
   {'V1': -6.2809e-15},
   {'V2': 1.6456e-15},
   {'V3': 1.1651},
   {'V4': 1.7147e-15},
   {'V5': 9.8872e-16}]},
 {'Time': 18057631.1,
  'Flux': [{'V0': 4.1124e-15},
   {'V1': 1.5598e-15},
   {'V2': -2.325e-16},
   {'V3': 1.1638},
   {'V4': -3.9983e-15},
   {'V5': 4.459e-16}]}]

我想得到这样的东西:

preferred_df:

                     V0            V1  ...            V4            V5
Time                                    ...                            
18057610.0 -1.420900e-15  2.735300e-16  ... -6.169200e-15  3.221800e-15
18057620.4  2.437700e-16 -6.280900e-15  ...  1.714700e-15  9.887200e-16
18057631.1  4.112400e-15  1.559800e-15  ... -3.998300e-15  4.459000e-16

我想出了以下代码来实现这个目的:

df = pd.DataFrame(data).explode('Flux').reset_index(drop=True)
df = df.join(pd.DataFrame(df.pop('Flux').values.tolist())).groupby('Time').sum()

然而,我不想使用groupbysum().还有哪些方法(字典理解?)将"Flux"列展平而不获取NaN值,同时将字典展平并获取preferred_df?我试了json_normalize()次,但得到了相同的NaN,需要使用groupby()sum().

推荐答案

try :

df = pd.DataFrame(
    [{k: v for d2 in d["Flux"] for k, v in d2.items()} for d in data],
    index=[d["Time"] for d in data],
)
print(df)

输出:

                      V0            V1            V2      V3            V4            V5
18057610.0 -1.420900e-15  2.735300e-16  1.193500e-15  1.1624 -6.169200e-15  3.221800e-15
18057620.4  2.437700e-16 -6.280900e-15  1.645600e-15  1.1651  1.714700e-15  9.887200e-16
18057631.1  4.112400e-15  1.559800e-15 -2.325000e-16  1.1638 -3.998300e-15  4.459000e-16

Python-3.x相关问答推荐

将Trio与基于线程的事件侦听器混合使用

使用PANAS根据另两个列表中的值对一个列表中的字符串值进行分组

通过在不重新索引的情况下采用最高概率的百分比,有效地转换 0/1 列表中的概率列表

python2和python3中的列表生成器

Python.在循环中填充字典的问题

使用 pandas 数据帧映射到中转( node )点的跨容量请求

Pandas数据单调行为

是否将dict转换为一个数据帧,每个值都有重复的键?

Await Future 来自 Executor:Future 不能在await表达式中使用

命名元组内命名元组的 Python 语法

错误:预期语句,发现 py:Dedent

使用 Python 3 按行进行分析

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

如何调试垂死的 Jupyter Python3 内核?

为什么在 Python 中不推荐使用 MutableString?

如何模拟 open(...).write() 而不会出现没有这样的文件或目录错误?

如何使用 python 库连接到 poloniex.com websocket api

没有名为urlparse的模块,但我没有使用 urlparse

命名参数可以与 Python 枚举一起使用吗?

注册 Celery 基于类的任务