[英]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.