dataframe某列为list,将它转化成包含所有list的元素的新dataframe,举个例
时间: 2023-08-18 16:03:48 浏览: 95
例如,有如下的DataFrame:
```
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [[4, 5], [6, 7, 8], [9]]})
print(df)
```
输出为:
```
A B
0 1 [4, 5]
1 2 [6, 7, 8]
2 3 [9]
```
其中,列B的每个元素都是一个list。现在需要将列B中的所有元素展开成新的DataFrame,可以使用`explode`方法来实现:
```
new_df = df.explode('B')
print(new_df)
```
输出为:
```
A B
0 1 4
0 1 5
1 2 6
1 2 7
1 2 8
2 3 9
```
可以看到,原来的DataFrame被展开成了包含所有list元素的新DataFrame。注意,`explode`方法只能用于pandas 0.25及以上的版本。
相关问题
dataframe某列为list,将它转化成所有list包含元素的新dataframe,举个例
例子:
假设有如下的DataFrame:
```
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [['a', 'b'], ['c'], ['d', 'e']]
})
print(df)
```
输出:
```
A B
0 1 [a, b]
1 2 [c]
2 3 [d, e]
```
现在要将列`B`中的list转化成新的DataFrame,其中每个元素占一行,同时保留对应的`A`列的值。可以使用`explode`函数实现:
```
new_df = df.explode('B')
print(new_df)
```
输出:
```
A B
0 1 a
0 1 b
1 2 c
2 3 d
2 3 e
```
这样就成功地将原DataFrame中的`B`列转化成了新的DataFrame,并且每个元素都占据了一行,同时保留了对应的`A`列的值。
dataframe某列为list,将它转化成包含所有list的元素为列名的新dataframe,举个例
假设我们有以下的数据框,其中 "list_col" 是一个包含列表的列:
```
import pandas as pd
df = pd.DataFrame({
"id": [1, 2, 3],
"list_col": [["a", "b"], ["c", "d", "e"], ["f"]]
})
print(df)
```
输出:
```
id list_col
0 1 [a, b]
1 2 [c, d, e]
2 3 [f]
```
我们可以使用 Pandas 的 `apply(pd.Series)` 方法来将列表展开为列名,并将每个元素填充到相应的列中。然后,我们可以使用 `concat` 函数将这些新列连接到原始数据框中:
```
new_df = pd.concat([df["id"], df["list_col"].apply(pd.Series)], axis=1)
new_df.columns = ["id"] + [f"col_{i}" for i in range(new_df.shape[1]-1)]
print(new_df)
```
输出:
```
id col_0 col_1 col_2
0 1 a b None
1 2 c d e
2 3 f None None
```
在这个新的数据框中,每个列表中的元素被展开成了一个新的列,列名由原始列表中的元素组成。如果一个列表中的元素数量少于最长的列表,那么缺失的列将被填充为 `None`。
阅读全文