python-3.x - 如何将 Pandas 字符串列拆分为不同的行?
问题描述
这是我的问题。我有这样的数据:
data = {
'name': ["Jack ;; Josh ;; John", "Apple ;; Fruit ;; Pear"],
'grade': [11, 12],
'color':['black', 'blue']
}
df = pd.DataFrame(data)
看起来像:
name grade color
0 Jack ;; Josh ;; John 11 black
1 Apple ;; Fruit ;; Pear 12 blue
我希望它看起来像:
name age color
0 Jack 11 black
1 Josh 11 black
2 John 11 black
3 Apple 12 blue
4 Fruit 12 blue
5 Pear 12 blue
所以首先我需要使用“;;”来拆分名称 然后将该列表分解为不同的行
解决方案
Series.str.split
与 reshape by 一起使用DataFrame.stack
并添加原始的另一列 by DataFrame.join
:
c = df.columns
s = (df.pop('name')
.str.split(' ;; ', expand=True)
.stack()
.reset_index(level=1, drop=True)
.rename('name'))
df = df.join(s).reset_index(drop=True).reindex(columns=c)
print (df)
name grade color
0 Jack 11 black
1 Josh 11 black
2 John 11 black
3 Apple 12 blue
4 Fruit 12 blue
5 Pear 12 blue
推荐阅读
- javascript - 通过 JavaScript 函数调用时,Rails 部分未呈现
- python - 如何检测python-docx中的空段落
- r - 试图让脚本为每 24 行计算一个值(使用函数)
- javascript - Angular 6:日期未定义
- java - Jersey HK2 依赖注入在更新到 v2.27 后不起作用
- javascript - Redux 不重新渲染组件
- c - 如何在不复制代码的情况下创建不可转换的 C 类型?
- javascript - React 改变组件的 props 而不是每次都渲染
- r - 保存文件时如何删除部分名称?
- php - 基于名称和操作的带有复选框的组权限列表