问题:我有一个数据框,需要根据特定列的值进行修改。如果任何列值的值大于允许的最大值,则将根据分布到大小相等的存储箱中创建新行(在数据值和允许的最大值之间进行整数除法)
表格和说明:
原创:
^{tb1}$
必需:
括号中的索引值指原始索引值
^{tb2}$
因为原始索引=2,所以Data1=10大于允许的最大值=8。如上表所示,该行已分为两行
尝试:我能够找到那些值大于允许的最大值和要插入的行数的列。但我有一个困惑,如果两列的值都大于最大允许值(如index=3),这种方法是否有效。这些值指示要为特定列的每个索引值插入多少行
^{tb3}$
Tags:
假设您愿意逐行处理数据帧,则可以在while循环中执行最大值检查,并用新行填充新数据帧
让我们按照以下步骤进行操作:
步骤1:分割值的准备:
定义自定义lambda函数,将
Data 1
、Data 2
转换为值列表,如果大于该值,则使用Max. Allowed
进行拆分。将展开的列表保存在两个新列中Data 1x
,Data 2x
:lambda函数用于将0添加到列表中,以使同一行列表中的元素数具有相同的长度
中间结果:
步骤2:将拆分值分解为单独的行:
案例1:如果您的Pandas版本为1.3或更高版本
我们使用^{} 分解2个新列:(分解多个列的这部分功能需要1.3版或更高版本)
案例2:对于低于1.3的Pandas版本,请尝试以下爆炸方式:
案例3:如果上述两种分解方法在您的编程环境中不起作用,请使用:
结果:
步骤3:格式化为所需输出:
最终结果:
相关问题 更多 >
编程相关推荐