我有一只Pandas ,看起来像:

import pandas as pd
print(pd.__version__)

df0 = pd.DataFrame([
 [12, None, [{'dst': '925', 'object': 'Lok. Certification', 'admin': 'valid'},
             {'dst': '935', 'object': 'Lok. Administration', 'admin': 'true'},
             {'dst': '944', 'object': 'Lok. Customer', 'admin': 'false'},
             {'dst': '945', 'object': 'Lok. Customer', 'admin': 'false'},
             {'dst': '954', 'object': 'Lok. Certification-C', 'admin': 'invalid'},
             {'dst': '956', 'object': 'Lok. Certification', 'admin': 'valid'}]],
 [13,'wXB', [{'dst': '986', 'object': 'Fral_heater', 'admin': 'valid'},
             {'dst': '987', 'object': 'Fral_cond.', 'admin': 'valid'}]],
 ])

第2列中的每个列表都有完全相同的键(dstobjectadmin).

df0的每一行可以有0(空[])到[]个列表.

我希望我能让df0数据帧看起来像这样:

columns = ['id', 'name', 'dst', 'object', 'admin']

df_wanted
Out[416]: 
     id name  dst  object                admin
    12  None  925 'Lok. Certification'   'valid'
    12  None  935 'Lok. Administration'  'true'
    12  None  944 'Lok. Customer'        'false'
    12  None  945 'Lok. Customer'        'false'
    12  None  955 'Lok. Certification-C' 'invalid'
    12  None  956 'Lok. Certification'   'valid'
    13   wXB  987 'Lok. Fral_heater'     'valid'
    13   wXB  986 'Lok. Fral_cond.'      'valid'
    ...

请注意,前两列idname沿行复制,以适应其列表中的元素数量.

(必须在末端使用.astype(int)dst柱铸造成int.)

我怎样才能做到这一点?

信息:

Python 3.10.4
pd.__version__
'1.4.2'

推荐答案

您可以先输入列,然后将字典转换为列:

df0 = df0.explode(2, ignore_index=True)    
df0 = pd.concat([df0, df0[2].apply(pd.Series)], axis=1).drop(columns=2)

Python相关问答推荐

在Python中从嵌套的for循环中获取插值

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

比较两个有条件的数据帧并删除所有不合格的数据帧

如何在Python中从html页面中提取html链接?

上传文件并使用Panda打开时的Flask 问题

按条件计算将记录拆分成两条记录

我如何处理超类和子类的情况

在Django REST框架中定义的URL获得404分

将参数从另一个python脚本中传递给main(argv

使用元组扩展字典的产品挑战

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)

`Convert_time_zone`函数用于根据为极点中的每一行指定的时区检索值

极点在没有Groupby的情况下聚合

Df.Drop_Duplates(),以极点表示?

Python开发依赖项

";abc";+5被认为是python中的一个表达式吗?

如何在Python中返回多行SQL查询

我的tkinter应用程序不会改变它正在加载的文件

是否 Select 所有整型列,除了几个python-polars列?

将polars框架中的列组合并为单个列