数据转换:一般包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、列表和元组等
【一列数据转换为多列数据】
split方法
Series.str.split(pat=None, n=-1, expand=False)
pat 字符串、符号或正则表达式,表示字符串分割的依据,默认以空格分割字符串
n 整型,分割次数,默认值是-1,0或-1都将返回所有拆分的字符串
expand 布尔型,分割后的结果是否转换为DataFrame,默认值是False
返回值 系列、索引、DataFrame或多重索引
# 数据是多种商品组合,称为复合
import pandas as pd
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
pd.set_option('display.unicode.east_asian_width', True)
# 导入指定数据 '买家会员名', '收货地址'
df = pd.read_excel('mrbooks.xls', usecols=['买家会员名', '收货地址'])
series = df['收货地址'].str.split(' ', expand=True)
df['省'] = series[0]
df['市'] = series[1]
df['区'] = series[2]
print(df.head())
买家会员名 收货地址 省 市 区
0 mr00001 重庆 重庆市 南岸区 重庆 重庆市 南岸区
1 mr00003 江苏省 苏州市 吴江区 吴江经济技术开发区亨通路 江苏省 苏州市 吴江区
2 mr00004 江苏省 苏州市 园区 苏州市工业园区唯亭镇阳澄湖...... 江苏省 苏州市 园区
3 mr00002 重庆 重庆市 南岸区 长生桥镇茶园新区长电路11112号 重庆 重庆市 南岸区
4 mr00005 安徽省 滁州市 明光市 三界镇中心街10001号 安徽省 滁州市 明光市
【join方法与split方法结合】
import pandas as pd
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
pd.set_option('display.unicode.east_asian_width', True)
# 导入指定数据 '买家会员名', '收货地址'
df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题'])
df = df.join(df['宝贝标题'].str.split(',', expand=True))
print(df)
买家会员名 宝贝标题 0
0 mr00001 PHP程序员开发资源库 PHP程序员开发资源库
1 mr00003 个人版编程词典加点 个人版编程词典加点
2 mr00004 邮费 邮费
.. ... ... ...
193 mr00232 明日科技 Java编程词典个人版 明日科技 Java编程词典个人版
【对元组数据进行分割】
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
# 导入指定数据 '买家会员名', '收货地址'
df = pd.DataFrame({'a':[1,2,3,4,5],'b':[(1,2),(3,4),(5,6),(7,8),(9,10)]})
print(df)
a b
0 1 (1, 2)
1 2 (3, 4)
2 3 (5, 6)
3 4 (7, 8)
4 5 (9, 10)
df[['b1','b2']] = df['b'].apply(pd.Series)
df = df.join(df['b'].apply(pd.Series))
print(df)
a b b1 b2
0 1 (1, 2) 1 2
1 2 (3, 4) 3 4
2 3 (5, 6) 5 6
3 4 (7, 8) 7 8
4 5 (9, 10) 9 10
网友评论