首页 > 解决方案 > 从值数组创建一个新的数据框

问题描述

0    {'not_needed': 'not_needed', 'needed': ['', 'PPP', 8.414448]}
1    {'not_needed': 'not_needed', 'needed': ['', 'FFF', 7.414448]}

只是用熊猫学习,我以某种方式解析了这样的复杂数据。但是,我们如何通过忽略第一个空字符串值并仅使用名为&needed的 2 个新 pandas 列中的其他 2 个值,从键的数组值创建一个新的 pandas 数据框?namevalue

预期输出(带编号索引的两列)

0    {'name': 'PPP', 'value': 8.414448}
1    {'name': 'FFF', 'value': 7.414448}

标签: pandas

解决方案


假设您Series有常规模式,即所有行都具有相同的 dict 键,并且您正在触及的嵌套级别:

ds1 = ds.str["needed"].str[1:]
ds2 = pd.DataFrame(ds1.to_list(), columns = ["name", "value"])
ds3 = pd.Series(ds2.to_dict("record"))

对于pd.Series格式输入:

import pandas as pd

ds = pd.Series([{'not_needed': 'not_needed', 'needed': ['', 'PPP', 8.414448]},
{'not_needed': 'not_needed', 'needed': ['', 'FFF', 7.414448]}])

现在解释一下步骤:

ds1list- 与或在行dict中交互的方式pandas是调用.str[key]wherekey可以是dict键或list引用。

ds2- 是ds1使用预定义名称分成列的方法。

ds3-to_dict("record")将您的数据框转换为列表,其中每一行由格式的单个条目表示{column1_name: column1_value_rowN, column2_name: column2_value_rowN, ...}


推荐阅读