【发布时间】:2021-11-27 21:57:55
【问题描述】:
df1 来自 excel 文件,列如下:
| Currency | Net Original | Net USD | COGS |
|---|---|---|---|
| USD | 1.5 | 1.2 | 2.1 |
| USD | 1.3 | 2.1 | 1.2 |
| USD | 1.1 | 2.3 | -1.1 |
| Peso Mexicano | 1.6 | 2.2 | 2.1 |
第 1 步:需要导出转化率列“Conv”,其中“货币”为“墨西哥比索”
#过滤“墨西哥比索”货币并将其作为单独的数据框 (df2)
df2 = df1[df1['Currency']== "Peso Mexicano"]
第 2 步: #接下来使用公式,使用公式从df2获取“转化率”
df2['Conv']= (df2['Net USD']/df2['Net Original'])
#输出 1.37
#将过滤后的结果“Conv”与“COGS”列相乘,得到想要的结果
df1['Inv'] = (df2['Conv']*df1['COGS'])*-1
display(df1)
但是,无论货币为“USD”,结果都会显示“NaN”列“Inv”。
预期输出:
| Currency | Net Original | Net USD | COGS | Inv |
|---|---|---|---|---|
| USD | 1.5 | 1.2 | 2.1 | 1.87 |
| USD | 1.3 | 2.1 | 1.2 | 0.64 |
| USD | 1.1 | 2.3 | -1.1 | -2.50 |
| Peso Mexicano | 1.6 | 2.2 | 2.1 | 1.87 |
【问题讨论】:
-
您在预期输出中的数字与您的描述不符
-
我相信描述与预期输出相匹配。在第 1 步之后,创建新的数据框 df2,其中只有一行数据,其中货币为墨西哥比索。然后在第 2 步中,使用 Net USD/Net Original 在 df2 中创建新列 Conv。现在,“Conv”列将值存储为 1.37。然后在下一步中,通过乘以 (1.37* COGS 值)*-1 创建新列“Inv”。
-
我同意 1.37,但 Inv 编号对我来说没有意义,输入和输出之间的 COGS 也会发生变化
-
我明白了,它在第三排。我现在将对其进行编辑。谢谢
-
你如何得到-3.47?和-2.87?
标签: python pandas dataframe matrix-multiplication multiplication