31  explode

31.1 炸开成多行

31.1.1 单元格值为列表

import pandas as pd

# 创建一个包含列表的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [['a', 'b'], ['c'], ['d', 'e', 'f']]
})

df
A B
0 1 [a, b]
1 2 [c]
2 3 [d, e, f]
# 使用 explode() 方法拆分列 'B' 中的列表元素
df_exploded = df.explode('B')

df_exploded
A B
0 1 a
0 1 b
1 2 c
2 3 d
2 3 e
2 3 f

31.1.2 单元格值为符号分隔

import pandas as pd

# 创建一个示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['x,y,z', 'p,q', 'm,n,o']
})

df
A B
0 1 x,y,z
1 2 p,q
2 3 m,n,o
df['B'] = df['B'].str.split(',')
df
A B
0 1 [x, y, z]
1 2 [p, q]
2 3 [m, n, o]
df = df.explode('B')
df
A B
0 1 x
0 1 y
0 1 z
1 2 p
1 2 q
2 3 m
2 3 n
2 3 o