如何以"-"为分隔符,对dataframe中名为"科目|明细"的一列分列为5列,该列并非每行都可以分裂为五个,数量不够的部分以空白填充。不删除原始列,新建5列用以储存分列后的值,新的5列分别名为"一级科目"、"二级科目","三级科目","四级科目","五级科目"。
时间: 2023-07-21 11:06:14 浏览: 94
一篇解决dataframe 列的问题.ipynb
您可以使用`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,以便创建新的列。
阅读全文