Python Dataframe包含字典列表,需要使用字典项创建新的dataframe

标签 python pandas dictionary dataframe

我有一个 Python 数据框,其中包含字典列表(对于某些行):

In[1]:
cards_df.head()

Out[1]:
    card_id   labels
0   'cid_1'   []
1   'cid_2'   []
3   'cid_3'   [{'id': 'lid_a', 'name': 'lname_a'}, {'id': 'lid_b', 'name': 'lname_b'}]
4   'cid_4'   [{'id': 'lid_c', 'name': 'lname_c'}]

我想创建一个新的数据框,将字典项目列表扩展为单独的行:

    card_id   label_id  label_name
0   cid_3     lid_a     lname_a
1   cid_3     lid_b     lname_b
2   cid_4     lid_c     lname_c

最佳答案

使用pd.Series.str.len生成适当的值传递给np.repeat。这又用于重复 df.card_id.values 的值并创建新数据帧的第一列。

然后在 df['labels'] 上使用 pd.Series.sum 将所有列表连接成一个列表。这个新列表现在非常适合传递给 pd.DataFrame 构造函数。剩下的就是在每个列名称前面添加一个字符串,并连接到我们上面创建的列。

pd.DataFrame(dict(
    card_id=df.card_id.values.repeat(df['labels'].str.len()),
)).join(pd.DataFrame(df['labels'].sum()).add_prefix('label_'))

  card_id label_id label_name
0   cid_3    lid_a    lname_a
1   cid_3    lid_b    lname_b
2   cid_4    lid_c    lname_c
<小时/>

设置

df = pd.DataFrame(dict(
    card_id=['cid_1', 'cid_2', 'cid_3', 'cid_4'],
    labels=[
        [],
        [],
        [
            {'id': 'lid_a', 'name': 'lname_a'},
            {'id': 'lid_b', 'name': 'lname_b'}
        ],
        [{'id': 'lid_c', 'name': 'lname_c'}],
    ]
))

关于Python Dataframe包含字典列表,需要使用字典项创建新的dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405555/

相关文章:

python通过包含几个键值对作为条件的dict过滤dict列表

c# - 词典 - 添加注释以驱动智能感知

python - PyQt5 在尝试加载 PNG 图像时崩溃

python - 按组绘制变量平均值,每个条形中具有指定数量的实例

python - 为 Pandas Dataframe 中的重复集创建规则

python - 不理解 pandas 中 MonthEnd() 的输出

python - 按索引获取字典中的有序键

python - Pandas - 如何在每次添加列时重复数据框 n 次

python - Pygame,按下一个键时正好执行 1 次命令,然后等待另一次单击

python - TypeError: 'module' object is not callable in my simple program about python 模块