繁体   English   中英

在 Python 中模拟一个 excel 公式

[英]Simulate a excel formula in Python

我正在尝试模拟过去几个小时的 excel 公式,但并非无法这样做。 任何帮助,将不胜感激

Excel 版本的公式 -

IF(N2<>N1,O2-L2,Q1-L2)

Explanation - IF (N2 != N1) THEN O2-L2 ELSE Q1-L2

Columns Abbreviations - 

N = key_2
O = available_inventory
L = total_demand
Q = net_inventory

我已经在 Python 中完成了一些初始步骤,但无法重现相同的公式。 以下是我的版本 -

1. df_ao_pvt['key_2_shift'] = df_ao_pvt['key_2'].shift(-1,axis = 0)

2. df_ao_pvt['available_inventory'] = df_ao_pvt['available_inventory'].replace(np.nan, 0)

3. df_ao_pvt['net_inventory'] = df_ao_pvt.apply(lambda row: row.available_inventory - row.total_demand if row.key_2 != row.key_2_shift else row.net_inventory - row.total_demand, axis = 1)

附加信息 - 所涉及列的 DTYPE 写在下面 -

1. total_demand - int64
2. key_2 - Object
3. available_inventory - float64

我们需要在名为 net_inventory 的新列中创建公式(如代码的 Python 版本中所写)。 填充的列是 net_inventory 本身(如 python 代码中所写)

下面是我要复制公式的示例数据格式(注意 - 在实际数据中,行数超过 100 万) -

total_demand|key_2|available_inventory|key_2_shift|net_inventory
120000|20611011205|120520611012019-06-19|240000|120520611012019-06-20|120000
120000|20611011205|120520611012019-06-20|120000|120520611012019-06-26|0
120000|20611011205|120520611012019-06-26|120000|120520611012019-06-27|0
120000|20611011205|120520611012019-06-27|0|280120611012019-06-20|-120000
180000|20611012801|280120611012019-06-20|0|310420611012019-06-06|-180000

np.where就像 Excel 中的IF 所以你想做:

df['new_col'] = np.where(df['N'].ne(df['N'].shift()), 
                         df['O'], 
                         df['Q'].shift()
                        ) - df['L']

N,O,Q,L替换为相应的列名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM