技术求助:如何拆分手机号并复制对应DataFrame行?
解决方案:拆分手机号列并复制DataFrame行
没问题,这事儿用pandas的两个方法就能轻松搞定——str.split()和explode(),完美匹配你的需求。下面是完整的实现步骤和代码:
首先,先构造你给出的输入DataFrame:
import pandas as pd # 输入DataFrame data = { 'col1': ['a', 'b', 'c', 'd'], 'mob_no': ['9382949201/3245622535', '8383459345/4325562678', '8976247543/1827472398', '7844329432'], 'col3': [45, 67, 89, 9] } df = pd.DataFrame(data)
接下来执行拆分和行复制操作:
# 1. 把mob_no列按"/"拆分成列表格式 df['mob_no'] = df['mob_no'].str.split('/') # 2. 对mob_no列执行explode,将列表中的每个元素拆成单独的行,其他列自动匹配对应值 result_df = df.explode('mob_no', ignore_index=True)
运行完上面的代码后,result_df就是你想要的输出:
col1 mob_no col3 0 a 9382949201 45 1 a 3245622535 45 2 b 8383459345 67 3 b 4325562678 67 4 c 8976247543 89 5 c 1827472398 89 6 d 7844329432 9
简单说下原理:
str.split('/')会把每个带"/"的手机号字符串拆成列表,单个手机号的行则会生成只有一个元素的列表explode('mob_no')会把列表里的每个元素单独生成一行,同时保留该行对应的col1和col3的值;ignore_index=True是为了重置结果的索引,让它从0开始连续排列
内容的提问来源于stack exchange,提问作者genz_on_code
相关产品推荐
相关产品推荐

