如何以"-"为分隔符,对dataframe中名为"科目|明细"的一列分列为5列,该列并非每行都可以分裂为五个,数量不够的部分以空白填充。不删除原始列,新建5列用以储存分列后的值,新的5列分别名为"一级科目"、"二级科目","三级科目","四级科目","五级科目"。
时间: 2023-07-21 08:06:14 浏览: 57
您可以使用`str.split()`方法将指定列按照"-"分隔为多列,并使用`.str`属性获取每个新列的值。如果分列后的数量不够五列,可以使用`.fillna('')`方法将空缺的部分填充为空白。
下面是一种实现方法:
```python
import pandas as pd
# 创建示例DataFrame
data = {'科目|明细': ['一级科目-二级科目-三级科目', '一级科目-二级科目', '一级科目-二级科目-三级科目-四级科目-五级科目']}
df = pd.DataFrame(data)
# 分列并创建新列
df[['一级科目', '二级科目', '三级科目', '四级科目', '五级科目']] = df['科目|明细'].str.split('-', expand=True)
df[['一级科目', '二级科目', '三级科目', '四级科目', '五级科目']] = df[['一级科目', '二级科目', '三级科目', '四级科目', '五级科目']].fillna('')
# 打印结果
print(df)
```
执行上述代码后,您将得到一个新的DataFrame `df`,其中包含原始列"科目|明细"以及分列后的五个新列:"一级科目"、"二级科目"、"三级科目"、"四级科目"、"五级科目"。如果某行的分列数量不足五列,将以空白填充。
请注意,上述代码中使用了`expand=True`参数来将分列结果转化为DataFrame,以便创建新的列。
相关问题
如何以"-"为分隔符,对dataframe中名为"科目|明细"的一列分列为5列,该列并非每行都可以分裂为五个,数量不够的部分以空白填充。
要将DataFrame中的一列按照指定的分隔符进行分列,并确保分列后的结果为5列,可以使用`str.split()`方法和`expand=True`参数。同时,可以使用`fillna()`方法将数量不够的部分用空白填充。下面是一种实现方法:
```python
import pandas as pd
# 创建示例DataFrame
data = {'科目|明细': ['A-B-C-D-E', 'F-G-H', 'I-J-K-L-M', 'N-O-P-Q-R-S']}
df = pd.DataFrame(data)
# 将列按照分隔符分列为5列
df[['科目', '明细1', '明细2', '明细3', '明细4']] = df['科目|明细'].str.split('-', expand=True)
# 使用空白填充数量不够的部分
df = df.fillna('')
# 打印结果
print(df)
```
在上述代码中,首先创建了一个示例DataFrame `df`,其中包含名为"科目|明细"的一列,其值包含了以"-"分隔的字符串。
然后使用`str.split()`方法将该列按照"-"进行分列,并通过`expand=True`参数将结果扩展为多列。分列后的结果为5列,分别命名为"科目"、"明细1"、"明细2"、"明细3"和"明细4"。
接下来使用`fillna()`方法将数量不够的部分用空白进行填充,确保每一行都有5个分列结果。
最后,打印结果的DataFrame `df`。注意,如果原始的"科目|明细"列不足5个分列结果,则用空白进行填充。
dataframe中有一列的数据类型为array,如何统计该列的每一行的数组的长度
您可以使用pandas库中的apply函数,将该列的每一行的数组转换为长度,然后使用sum函数对所有长度进行求和,即可得到该列数组的总长度。示例代码如下:
import pandas as pd
df = pd.DataFrame({'array_col': [[1, 2], [3, 4, 5], [6]]})
array_lengths = df['array_col'].apply(len)
total_length = array_lengths.sum()
print(total_length)
输出结果为:6
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)