python pandas拆分单元格mp.weixin.qq.com
![4698540458d52b41f6c46bc7117c056b.png](https://i-blog.csdnimg.cn/blog_migrate/59d10720cf8b1909e0aa99df8633d1d8.png)
拆分单元格是excel中经常遇到的内容之一。那么在pandas中如何实现呢?
例如有如下数据:
>>> import pandas as pd
>>> import numpy as np
>>> df=pd.read_excel(r'D:/myExcel/1.xlsx')
>>> df
name score
0 bob_B 45
1 jiken_A 67
我们需要将name列拆分为name和grade两列
下面看一下实践
方案一:
# 此处应注意,split拆分时,不指定expand参数,则此时
# 会拆分为['bob', 'B']类似的列表。之后调用get方法即可,
# 获取指定的值
>>> df['grade']=df['name'].str.split('_').str.get(1)
>>> df
name score grade
0 bob_B 45 B
1 jiken_A 67 A
>>> df['name']=df['name'].str.split('_').str.get(0)
>>> df
name score grade
0 bob 45 B
1 jiken 67 A
方案二:
使用split拆分之后,调用merge方法
此种模式适合拆分的列数较多,又全都需要
# 拆分之后成为dataFrame
>>> df1=df['name'].str.split('_', expand=True)
>>> df1
0 1
0 bob B
1 jiken A
# 合并,注意此处使用的是index合并
>>> df = df.merge(df1, how='inner', left_index=True, right_index=True)
>>> df
name score 0 1
0 bob_B 45 bob B
1 jiken_A 67 jiken A
# 修改列名等使其符合原顺序
>>> df['name'] = df[0]
>>> df
name score 0 1
0 bob 45 bob B
1 jiken 67 jiken A
>>> del df[0]
>>> df
name score 1
0 bob 45 B
1 jiken 67 A
>>> df = df.rename(columns={1:'grade'})
>>> df
name score grade
0 bob 45 B
1 jiken 67 A
哈哈,以上就是python小工具关于pandas拆分单元格的介绍,欢迎大家关注:python小工具。一起学习python和pandas