我正在尝试从一个Excel文件中复制多个嵌套的IF语句,并将其应用于一个Pandas DataFrame,如果可能的话,不会遍历每个单独的值。我有一个10x10000随机数的数据帧,基本上我想通过只复制10行中的第1行来创建一个新的Dataframe:
=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谢谢!
发布于 2018-08-26 02:02:08
对于第一个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希望这对某些人有帮助,并感谢那些尝试过的人!
https://stackoverflow.com/questions/51737655
复制相似问题