首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas DataFrame中的多个条件语句

Pandas DataFrame中的多个条件语句
EN

Stack Overflow用户
提问于 2018-08-08 10:05:07
回答 1查看 482关注 0票数 0

我正在尝试从一个Excel文件中复制多个嵌套的IF语句,并将其应用于一个Pandas DataFrame,如果可能的话,不会遍历每个单独的值。我有一个10x10000随机数的数据帧,基本上我想通过只复制10行中的第1行来创建一个新的Dataframe:

代码语言:javascript
复制
=IF(D16<0.25,1,IF(D16<0.5,2,IF(D16<0.75,3,4)))

此输出为D27格式。在第2-10行:

代码语言:javascript
复制
=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随机矩阵的代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np
randomvars = pd.DataFrame(np.random.randint(0,100,size=(10,10000)))/100

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 02:02:08

对于第一个IF语句,我使用了一个简单的语句:

代码语言:javascript
复制
Econstate2=pd.DataFrame(np.where(randomvars<0.25,1,np.where(randomvars<.5,2,np.where(randomvars<.75,3,4))))

然而,对于上面的第二个IF,我不能使用复杂的嵌套IF:

代码语言:javascript
复制
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

希望这对某些人有帮助,并感谢那些尝试过的人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51737655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档