dataframe某列为list,查看共有多少种元素
时间: 2023-08-16 12:05:47 浏览: 97
可以将这一列转换成 set 类型,然后查看 set 的长度即可得到该列中有多少种元素。下面是一个示例代码:
```python
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'col1': ['a', 'b', 'c', 'd'],
'col2': [[1, 2], [2, 3], [3, 4], [4, 5]]
})
# 将 col2 转为 set 类型,并查看长度
unique_elements = set(x for l in df['col2'] for x in l)
num_unique_elements = len(unique_elements)
print(num_unique_elements)
```
输出结果为 5,说明该列中共有 5 种元素。
相关问题
某个dataframe某列为list拆分成为新的dataframe
可以使用`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
```
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`列的值。
阅读全文