pandas处理表格时,字符串列的拆分及合并操作,类似于excel中的分列
1.根据分隔符将一列拆成多列; 2.将多列进行合并
分列
参考api介绍: Series.str.split()
该方法支持正则表达式
处理高德Poi数据时发现有一列typename是这样的:
- 汽车服务;汽车服务相关;汽车服务相关
- 生活服务;人才市场;人才市场
- 餐饮服务;中餐厅;中餐厅
分别代表大中小类别,因此通过如下代码切分
expand=True
表示将拆分的字符串展开为单独的列
n
指定拆分的分隔符个数,默认0/-1全部拆分
1 2 3 4 5 6
| df_sample = df.sample(500)
df_sample['typename'].str.split(';', expand=True)
df_sample[['type1', 'type2', 'type3']] = df_sample['typename'].str.split(';', n=2, expand=True)
|
合并
参考api介绍: Series.str.cat()
补充的其他方法,另见参考2
确保各类为文本/字符串类型,否则先转换
1 2 3 4 5 6 7 8 9 10 11
|
df_sample["typename2"] = df_sample['type1'].astype(str) +"-"+ df_sample["type2"]+"-"+ df_sample["type3"]
df_sample['typename2'] = df_sample['type1'].str.cat(df_sample[['type2', 'type3']], sep=',')
df["typename2"] = df[['type1', 'type2', 'type3']].apply("-".join, axis=1) df["typename2"] = df[['type1', 'type2', 'type3']].agg("-".join, axis=1) df["typename2"] = df[['type1', 'type2', 'type3']].apply(lambda x: "-".join(x), axis =1)
|