我正在尝试从Excel文件中复制多个嵌套的IF语句,并将其应用于Pandas DataFrame,而不会尽可能遍历每个单独的值。我有一个随机数为10x10000的数据框,并且基本上想通过仅复制第10行的Excel代码来创建新的数据框:
=IF(D16<0.25,1,IF(D16<0.5,2,IF(D16<0.75,3,4)))
此输出在D27中。在第2-10行:
=IF(D27=1,IF(D17<$E$3,1,3),IF(D27=2,IF(D17<$E$3,1,3),IF(D27=3,IF(D17<$E$4,2,4),IF(D27=4,IF(D17<$E$4,2,4)))))
E3,E4是硬编码的数字。因此,有多个条件和对先前值的引用。这是创建10x10000随机矩阵的代码:
import pandas as pd
import numpy as np
randomvars = pd.DataFrame(np.random.randint(0,100,size=(10,10000)))/100
谢谢!
答案 0 :(得分:0)
对于第一个IF语句,我使用了一个简单的语句:
Econstate2=pd.DataFrame(np.where(randomvars<0.25,1,np.where(randomvars<.5,2,np.where(randomvars<.75,3,4))))
但是我不能为上面的第二个IF使用复杂的嵌套IF:
for x in range(0,len(randomvars.columns)):
for i in range(1,len(randomvars)):
if Econstate2.loc[i-1,x] == 1 or Econstate2.loc[i-1,x] == 2:
if randomvars.loc[i,x] < .88:
Econstate2.loc[i,x] = 1
else:
Econstate2.loc[i,x] = 3
elif Econstate2.loc[i-1,x] == 3 or Econstate2.loc[i-1,x] == 4:
if randomvars.loc[i,x] < .80:
Econstate2.loc[i,x] = 3
else:
Econstate2.loc[i,x] = 4
希望这对某人有帮助,并感谢尝试过的人!