dataframe某列为list,将它转化成所有list包含元素的列,举个例子
时间: 2023-08-16 15:06:24 浏览: 194
假设我们有以下的 DataFrame:
```
id values
0 1 [a, b, c]
1 2 [d, e]
2 3 [f, g, h, i]
```
其中 `values` 列是一个列表,包含了不同长度的元素。我们可以使用 pandas 的 `explode` 方法将这个列表拆分成多行,每行只包含一个元素,如下所示:
```python
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3],
'values': [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']]
})
df = df.explode('values').reset_index(drop=True)
print(df)
```
输出:
```
id values
0 1 a
1 1 b
2 1 c
3 2 d
4 2 e
5 3 f
6 3 g
7 3 h
8 3 i
```
可以看到,`values` 列现在被拆分成了多行,每行只包含一个元素,而且每行的索引都重新编号了。如果需要保留原来的索引,可以使用 `df.reset_index()` 方法,并指定 `drop=False` 参数。
相关问题
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,举个例
例如,有如下的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及以上的版本。
阅读全文