需要创建一个新的df,其中包含一个基于两个公式的列。我可以用group和merge创建多个df。但有没有一种有效的方法来实现这一目标
df_1如下所示:
df_1 = pd.DataFrame([['A', '1/1/2021','SKU_1','Customer Backhaul','34,848','$-51,100'],
['A', '1/1/2021','SKU_1','FOB','75,357','$12,407,112'],
['A', '1/1/2021','SKU_1','Price','75,357','$12,407,112'],
['A', '1/1/2021','SKU_1','Vendor Freight - Delivered','40,511','$65,470'],
['B', '1/1/2021','SKU_1','Customer Backhaul','197,904','$-157,487'],
['B', '1/1/2021','SKU_1','FOB','931,866','$50,059,515'],
['B', '1/1/2021','SKU_1','Price','931,866','$62,333,500'],
['B', '1/1/2021','SKU_1','Vendor Freight - Delivered','740,355','$1,220,927']],
columns=['Group', 'Month','ID','Cost Type','Volume','Order Cost'])
“值”列的公式
输出[df_2]
Group Month ID Cost Type Volume Cost
0 A 1/1/2021 SKU_1 Freight 75,357 $116,570
1 A 1/1/2021 SKU_1 FOB 75,357 $12,407,112
2 A 1/1/2021 SKU_1 Price 75,357 $12,434,063
3 B 1/1/2021 SKU_1 Freight 931,866 $1,378,414
4 B 1/1/2021 SKU_1 FOB 931,866 $50,059,515
5 B 1/1/2021 SKU_1 Price 931,866 $62,490,988
我们可以用^{} 应用这些公式:
Volume
/Cost
数据帧Cost
元组和^{数据帧选项
首先将数字字符串转换为实际数字(或者,如果正在使用^{} 加载数据,请使用
thousands
参数):给定
Group
/Month
/ID
组,将其Volume
和Cost
作为数据帧返回:然后用^{} 应用
formulae_df
:带有^{}
由于每个组都有一个} 它们:
Volume
和多个Cost
,因此我们可以将Cost
生成为列表/元组和^{第一步仍然是将数字字符串转换为实际数字:
给定一个
Group
/Month
/ID
组,计算其Volume
(值)和Cost
(元组):当我们用^{} 应用
formulae_series
时,请注意Cost*
列如何包含元组:现在^{} 将这些元组分成行:
完整代码
以下是重新组合的步骤(包括可选转换回逗号/美元):
输出:
我发现当它是一个计算时,以及当您只想创建一个包含计算的文本时,有点难以理解,数字来自何处等等
在我理解了这个问题后,我在下面提供了一个例子(如果我误解了,请随意评论):
您可以在每一行上循环,然后对值进行计算(并对公式使用
replace
函数)相关问题 更多 >
编程相关推荐