【发布时间】:2018-08-20 01:12:04
【问题描述】:
我正在处理一个数据集,其中 PLU 列中的值分散在各处,例如: 在 500 多列中,我有 4 列:
Inventory_No | Description | Group | PLU
----------------------------------------------
93120007 | Coke |Drinks | 1000
93120008 | Diet Coke |Drinks | 1003
93120009 | Coke Zero |Drinks | 1104
93120010 | Fanta |Drinks | 1105
93120011 | White Bread |Bread | 93120011
93120012 | whole Meal |Bread | 93120012
93120013 | Whole Grains|Bread | 110011
93120014 | Flat white |Breads | 1115092
我希望我的输出如下所示,如果 PLU 列中有任何长度超过 6 位的值,系统会检查 PLU 序列中长度小于 4 位的下一个可用数字并添加增量1 并将 PLU 值分配给该行,并且不会更改任何现有的小于 6 位数的 PLU:
Inventory_No | Description | Group | PLU
----------------------------------------------
93120007 | Coke |Drinks | 1000
93120011 | White Bread |Bread | 1001
93120012 | whole Meal |Bread | 1002
93120008 | Diet Coke |Drinks | 1003
93120014 | Flat white |Breads | 1004
. | . | . | .
. | . | . | .
. | . | . | .
93120009 | Coke Zero |Drinks | 1104
93120010 | Fanta |Drinks | 1105
93120013 | Whole Grains|Bread | 110011
我想要序列中小于 6 位的下一个可用值并将其递增 1,如果它找到任意数量的递增值的序列,则跳过该序列并从序列之后的下一个可用值开始序列长度小于 6 位:
我已经检查了以下链接,它们正朝着用 0 或 Nan 值填充序列
fill-in-a-missing-values-in-range-with-pandas
missing-data-insert-rows-in-pandas-and-fill-with-nan
提前感谢您的回答。 问候,
【问题讨论】:
-
遍历
PLU中的所有值并从之前的行中分配一个递增的值还不够吗?而且我猜您隐含地假设您分配的数字不会超过 6 位数,因为它们可能与从外部分配的数字发生冲突? -
既然你会改变一些PLU......你能不能不重新写很多?如果它需要保持一致以引用其他很好的东西,但在你更改它们的地方不会出现这种情况......所以......看起来如果你很乐意这样做,你应该给他们所有的品牌新代码从 1000 开始
标签: python python-3.x pandas