Python 3.x Python—如何处理在数据帧中以字符串形式编写的嵌套字典?

Python 3.x Python—如何处理在数据帧中以字符串形式编写的嵌套字典?,python-3.x,string,pandas,dictionary,Python 3.x,String,Pandas,Dictionary,我遇到了一个问题,我发现这个问题与平台上的其他示例类似,但不完全相同 我的数据帧基于传感器数据的CSV 以下是仅一个单元格的输出: df['streams'][0] 输出: > "{'AirBeam-PM': {'session_id': 83611, 'measurements_count': 1904, > 'unit_name': 'micrograms per cubic meter', 'sensor_name': > 'AirBeam-PM', 'threshol

我遇到了一个问题,我发现这个问题与平台上的其他示例类似,但不完全相同

我的数据帧基于传感器数据的CSV

以下是仅一个单元格的输出:

df['streams'][0]
输出:

> "{'AirBeam-PM': {'session_id': 83611, 'measurements_count': 1904,
> 'unit_name': 'micrograms per cubic meter', 'sensor_name':
> 'AirBeam-PM', 'threshold_medium': 35, 'size': 1904, 'max_longitude':
> 105.8774276, 'sensor_package_name': 'AirBeam:00189610582E', 'unit_symbol': 'µg/m³', 'measurement_short_type': 'PM',
> 'average_value': 23.6113, 'start_longitude': 105.8773687,
> 'threshold_very_high': 150, 'min_latitude': 21.014873333,
> 'threshold_very_low': 0, 'measurement_type': 'Particulate Matter',
> 'threshold_high': 55, 'start_latitude': 21.0243842, 'min_longitude':
> 105.854333333, 'max_latitude': 21.040161667, 'id': 292691, 'threshold_low': 12}, 'AirBeam-RH': {'session_id': 83611,
> 'measurements_count': 1904, 'unit_name': 'percent', 'sensor_name':
> 'AirBeam-RH', 'threshold_medium': 50, 'size': 1904, 'max_longitude':
> 105.8774276, 'sensor_package_name': 'AirBeam:00189610582E', 'unit_symbol': '%', 'measurement_short_type': 'RH', 'average_value':
> 52.0557, 'start_longitude': 105.8773687, 'threshold_very_high': 100, 'min_latitude': 21.014873333, 'threshold_very_low': 0,
> 'measurement_type': 'Humidity', 'threshold_high': 75,
> 'start_latitude': 21.0243842, 'min_longitude': 105.854333333,
> 'max_latitude': 21.040161667, 'id': 292690, 'threshold_low': 25},
> 'AirBeam-F': {'session_id': 83611, 'measurements_count': 1904,
> 'unit_name': 'degrees Fahrenheit', 'sensor_name': 'AirBeam-F',
> 'threshold_medium': 50, 'size': 1904, 'max_longitude': 105.8774276,
> 'sensor_package_name': 'AirBeam:00189610582E', 'unit_symbol': 'F',
> 'measurement_short_type': 'F', 'average_value': 83.7983,
> 'start_longitude': 105.8773687, 'threshold_very_high': 100,
> 'min_latitude': 21.014873333, 'threshold_very_low': 0,
> 'measurement_type': 'Temperature', 'threshold_high': 75,
> 'start_latitude': 21.0243842, 'min_longitude': 105.854333333,
> 'max_latitude': 21.040161667, 'id': 292692, 'threshold_low': 25}}"
正如你所看到的,有一个更大的字典包含了不同的字典,但它都是作为一个巨大的字符串编写的,这意味着我不能使用任何常用的dict键,我不知道如何使用它

最终目标是从每个单元的输出创建一个数据帧,即在数据帧中写入pandas系列中的每个dict

有人能帮我吗


谢谢

pd.DataFrame(eval(df['streams'][0]))work吗?如果没有eval,给json.load(…)一个try@ecortazar看到我下面的答案,我得到了两个错误,与yamlI复制了您发布的字符串并执行了pd.DataFrame(eval)相同。它工作得很好。这似乎是数据中其他地方的问题。
pd.DataFrame(eval(df['streams'][0]))
有效吗?如果没有eval,请给json.load(…)一个try@ecortazar看到我下面的答案,我得到了两个错误,与yamlI复制了您发布的字符串并执行了pd.DataFrame(eval)相同。它工作得很好。这似乎是数据中其他地方的问题。