某个dataframe某列为list拆分成为新的dataframe
时间: 2023-07-06 09:04:21 浏览: 79
按指定列拆分数据的工具
可以使用`pandas`库中的`explode`函数将包含列表的列拆分成新的行,然后再将每个元素拆分成新的列。
假设我们有以下数据框`df`,其中`col`列包含了列表:
```
A col B
0 1 [a, b, c] 2
1 3 [d, e] 4
```
我们可以使用以下代码将`col`列拆分成新的行:
``` python
import pandas as pd
df = pd.DataFrame({'A': [1, 3], 'col': [['a', 'b', 'c'], ['d', 'e']], 'B': [2, 4]})
df2 = df.explode('col')
```
这将生成以下数据框`df2`:
```
A col B
0 1 a 2
0 1 b 2
0 1 c 2
1 3 d 4
1 3 e 4
```
接下来,我们可以使用`pandas`库中的`apply`函数和`pd.Series`方法将每个元素拆分成新的列。例如,假设我们想要将列表中的第一个元素作为新的列`col1`,第二个元素作为新的列`col2`,第三个元素作为新的列`col3`,我们可以使用以下代码:
``` python
def split_cols(row):
return pd.Series(row['col'])
df3 = df2.apply(split_cols, axis=1).rename(columns={0: 'col1', 1: 'col2', 2: 'col3'})
df3 = pd.concat([df2[['A', 'B']], df3], axis=1)
```
这将生成以下数据框`df3`:
```
A B col1 col2 col3
0 1 2 a b c
0 1 2 a b c
0 1 2 a b c
1 3 4 d e NaN
1 3 4 d e NaN
```
阅读全文