我是Python的新手。我已从SQL查询结果中获取 Dataframe
|UserId|UserName|Reason_details|
| ------------ | ------------ | ------------ |
|851|Bob|[{“reasonId”:264,“reasonDescription”:“probited”,“reaonCodes”:[1,2]},{“easonId”:267,“reason Description”:“Expired”,“理性代码”:[25]}]|
|852|Jack|[{“reasonId”:273,“reasonDescription”:“受限”,“reaonCodes”:[29]}]|
我想通过展平Reason_details列来修改此 Dataframe 。每一个原因都在新行。
|UserId|UserName|Reason_id|Reson_description|Reason代码|
| ------------ | ------------ | ------------ | ------------ | ------------ |
|851|Bob|264|禁止|1|
|851|Bob|264|禁止|2|
|851 | Bob | 267 |过期| 25|
|852|杰克|273|限制|29|
我使用良好的旧for循环对源 Dataframe 的每一行进行迭代,使用json_loads
读取Reason_details
列中每个键的值,然后创建最终 Dataframe 。
但我觉得必须有更好的方法使用python中的dataframe和JSON函数来实现这一点。
PS:在我的实际数据集中,有63列和800万行,其中只有Reason_details列具有JSON值。因此,我现有的方法是对所有行进行非常低效的迭代,所有列首先在2D列表中转换它们,然后从中生成最终的 Dataframe 。
2条答案
按热度按时间8yparm6h1#
你能试试这个吗:
anhgbhbe2#
这里有一个稍微不同的方式