• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共95篇

    python3.X - 数据分析 - Pandas

关闭

返回栏目

关闭

返回python3.X - 数据分析 - Pandas栏目

29 - 转换 - df.explode("要拆的列") - 字段是list转多行

作者:

贺及楼

成为作者

更新日期:2024-10-18 14:31:04

字段是list转多行

explode 简介

Pandas 的 explode 函数是用来将一个 DataFrame 中的某个列表或字典类型的列分解(或展开)成多行。这通常用于将列中的每个元素转换为 DataFrame 的一行,从而简化数据处理和分析。

爆炸(Explode)操作的典型应用场景:
当列中包含列表或字典,并且你想要将这些列表或字典中的每个元素转换为 DataFrame 的一行。
在数据预处理阶段,用于将嵌套的数据结构展平成表格形式。

数据

  1. import numpy as np
  2. import pandas as pd
  3. df = pd.DataFrame(data=[{"A":"one", "B":"1, 2"}, {"A":"two", "B":"3, 4"}])
A B
0 one 1, 2
1 two 3, 4

整理

  1. df["B"] = df["B"].str.split(",")
A B
0 one [1, 2]
1 two [3, 4]
  1. df["B"] = df["B"].map(eval) # 类型是Object(字符串)要转成list

df.explode(“要拆的列”)

  1. df = df.explode("B")
  2. ## 会自动和其它字段进行笛卡尔积, 也就是自动匹配
A B
0 one 1
0 one 2
1 two 3
1 two 4
  1. ## 重置索引
  2. df1 = df.reset_index(drop=True)
A B
0 one 1
1 one 2
2 two 3
3 two 4

字段是list转多行

旧版方法

  1. data = data.set_index(['其余的列', '其余的列'])['B'].apply(pd.Series).stack().reset_index()