如何基于DataFrame列值实现行复制?
实现方法:拆分DataFrame列中的逗号分隔值并复制行
当然有办法搞定这个需求啦!在pandas里这是个很常见的操作,用explode()方法就能轻松实现,我给你一步步演示具体怎么做:
1. 先构造原始DataFrame
首先我们先把你给出的数据转换成pandas的DataFrame:
import pandas as pd data = {'a':'1', 'b': '1,2,3', 'c':'2'} df = pd.DataFrame(data, index=[0])
此时打印df会得到你提到的原始输出:
a b c 0 1 1,2,3 2
2. 拆分列并生成新行
接下来分两步操作:
- 先把列
b中的逗号分隔字符串拆分成列表格式 - 用
explode()方法把列表中的每个元素拆成单独的行,其他列保持原数值不变
代码如下:
# 将b列的字符串按逗号分割成列表 df['b'] = df['b'].str.split(',') # 对b列执行拆分,生成多行 result_df = df.explode('b') # 可选:重置索引,让索引从0开始连续排列 result_df = result_df.reset_index(drop=True)
3. 最终输出
此时打印result_df就会得到你想要的结果:
a b c 0 1 1 2 1 1 2 2 2 1 3 2
简单解释下原理:str.split(',')把b列的字符串转成了['1','2','3']这样的列表,而explode()方法会自动将列表中的每个元素单独拆成一行,同时保留a和c列的原始值,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者Juan Jose Vargas Estevez
相关产品推荐
相关产品推荐

