listdataframe某列是list分别转化成很多列
时间: 2023-08-07 08:09:26 浏览: 85
可以使用 `pandas` 的 `apply` 方法结合 `pd.Series` 将列表列拆分成多列。
假设数据如下:
```
import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3],
'list_col': [[1,2,3], [4,5], [6,7,8,9]]})
```
其中 `list_col` 是列表列,现在想将其拆分成多列。可以按照以下步骤进行操作:
1. 使用 `apply(pd.Series)` 将列表转换为多列,同时保留原有列名:
```
df_split = df['list_col'].apply(pd.Series)
```
2. 将原有的列表列名修改为 `list_col_`:
```
df_split = df_split.rename(columns=lambda x: 'list_col_'+str(x))
```
3. 将 `df_split` 与原有的 `df` 按照 `id` 进行连接:
```
df_new = pd.concat([df['id'], df_split], axis=1)
```
最终得到的 `df_new` 如下所示:
```
id list_col_0 list_col_1 list_col_2 list_col_3
0 1 1.0 2.0 3.0 NaN
1 2 4.0 5.0 NaN NaN
2 3 6.0 7.0 8.0 9.0
```
其中 `list_col_0`、`list_col_1`、`list_col_2`、`list_col_3` 分别是原有的列表中对应位置的元素。如果原有列表长度不同,那么通过这种方式拆分后,长度不够的列会出现缺失值。
阅读全文