我使用Jupyter笔记本中的Pandas来计算下面的数据集结构,下面的数据集结构包含列“产品”的重复项。
| name | val_id |val_amt | our_val_amt | val_against | product | **NEW FIELD**
| compx | xx1 | 530 | 424 | 418 | XL | 290
| compx | xx1 | 530 | 424 | 134 | CL | 134
| compx | xx2 | 590 | 472 | 600 | XL | 369
| compx | xx2 | 590 | 472 | 103 | CL | 103
我尝试循环遍历'name'列(在我的示例中只有1个,但有更多),并执行以下if/then条件。最后根据输出结构化数据。
条件
1.如果“产品”=“CL”且小于“瓦尔_against”,则将“saved_against”值插入“新字段”中,例如val_against(134)〈our_val_amt(424),因此“新字段”= 134(第2行)。
2.如果乘积=“XL”并且在相同的“瓦尔_id”(xx 1)中。要减去的余数将插入到“新字段”中。“our_val_amt”= 424 - 134(来自步骤1)= 290。这将插入到新字段上方。
3.对瓦尔_id xx 2重复步骤。新字段CL = 103且XL = 472 - 103 = 369。
4.最后一步将数据重组为以下所需输出。
我试过将变量分组在一起,并将“产品”作为列,但不幸的是,我收到了6000+列,不知道如何计算这种情况下的计算。我也试过循环,但没有太大成功。
预期输出为:
val id
---------------
| xx1 | xx2 |
| our_val_amt |
---------------------------------------
| product |val_against | 424 | 472 |
----------------------------------------
| XL | 418 | 290 | |
| CL | 134 | 134 | |
| XL | 600 | | 369 |
| CL | 103 | | 103 |
1条答案
按热度按时间nxowjjhe1#
这是你要找的吗?
.fillna('')
以将值保留为数字,并将缺失值保留为nan
,因为这样更便于在后面的步骤中使用。