如何将DataFrame中的值按指定mesh数拆分展开为多行?
拆分DataFrame行并生成均分列
基础场景
输入数据
给定DataFrame df1:
value mesh 0 10 2 1 12 3 2 5 2
目标
将df1的每一行拆成mesh列指定的行数,新增value/mesh列,值为原行value除以对应mesh的结果,最终得到如下df2:
value/mesh 0 5.0 1 5.0 2 4.0 3 4.0 4 4.0 5 2.5 6 2.5
实现代码
import pandas as pd # 初始化示例数据 df1 = pd.DataFrame({'value': [10,12,5], 'mesh': [2,3,2]}) # 计算均分后的值 df1['value/mesh'] = df1['value'] / df1['mesh'] # 按mesh的值重复对应行,然后重置索引 df2 = df1.loc[df1.index.repeat(df1['mesh'])].reset_index(drop=True) # 保留需要的列 df2 = df2[['value/mesh']]
通用场景(包含其他附加列)
输入数据
如果df1包含其他列,比如:
value mesh_value other_value 0 10 2 0 1 12 3 1 2 5 2 2
目标
拆分每行至mesh_value指定行数,生成value/mesh_value均分列,同时保留其他列的对应值,最终结果:
value/mesh_value other_value 0 5.0 0 1 5.0 0 2 4.0 1 3 4.0 1 4 4.0 1 5 2.5 2 6 2.5 2
实现代码
import pandas as pd # 初始化示例数据 df1 = pd.DataFrame({ 'value': [10,12,5], 'mesh_value': [2,3,2], 'other_value': [0,1,2] }) # 计算均分列 df1['value/mesh_value'] = df1['value'] / df1['mesh_value'] # 重复行并重置索引 df2 = df1.loc[df1.index.repeat(df1['mesh_value'])].reset_index(drop=True) # 调整列顺序(按需选择) df2 = df2[['value/mesh_value', 'other_value']]
内容的提问来源于stack exchange,提问作者cmg
相关产品推荐
相关产品推荐

