Python 检查列中所有值的几个条件

Python 检查列中所有值的几个条件,python,pandas,dataframe,Python,Pandas,Dataframe,我刚刚开始使用python和pandas。我在google和stack overflow上搜索了我的问题的答案,但没有找到答案。 这就是我需要做的: 我有一个df,每个人有几个数据行(id)和一个名为response_go的变量,它可以编码为1或0(输入int64),比如这个(更大,每个人有480行…) 现在,我想检查每个ID/个人的响应中的条目是否都分别编码为0、1或两者都不编码(else条件)。到目前为止,我已经得出了以下结论: ids = df['ID'].unique()

我刚刚开始使用python和pandas。我在google和stack overflow上搜索了我的问题的答案,但没有找到答案。 这就是我需要做的:

我有一个df,每个人有几个数据行(id)和一个名为response_go的变量,它可以编码为1或0(输入int64),比如这个(更大,每个人有480行…)

现在,我想检查每个ID/个人的响应中的条目是否都分别编码为0、1或两者都不编码(else条件)。到目前为止,我已经得出了以下结论:

    ids = df['ID'].unique()

    for id in ids:   
        if (df.response_go.all() == 1): 
            print "ID:",id,": 100% Go"
        elif (df.response_go.all() == 0):
            print "ID:",id,": 100% NoGo"
    else:
        print "ID:",id,": Mixed Response Pattern"
但是,它给了我以下输出:

ID: 1 : 100% NoGo
ID: 2 : 100% NoGo
ID: 2 : Mixed Response Pattern
应该在什么时候(包括1和0)

如果以前有人问过这个问题,我真的很抱歉,但在寻找答案时,我真的没有找到解决这个问题的方法。如果以前有人回答过这个问题,请告诉我解决方案。谢谢大家!!!!真的很感激

样本(数据不同)——

使用
groupby
+
mean
-

v = df.groupby('ID').response_go.mean()
v

ID
1    0.000000
2    1.000000
3    0.333333
Name: response_go, dtype: float64
u = np.select([v == 1, v == 0, v < 1], ['100% Go', '100% NoGo', 'Mixed Response Pattern'])
使用
np。选择
根据
响应的平均值计算您的状态

v = df.groupby('ID').response_go.mean()
v

ID
1    0.000000
2    1.000000
3    0.333333
Name: response_go, dtype: float64
u = np.select([v == 1, v == 0, v < 1], ['100% Go', '100% NoGo', 'Mixed Response Pattern'])
现在,返回结果-

v[:] = u
v

ID
1                 100% NoGo
2                   100% Go
3    Mixed Response Pattern
Name: response_go, dtype: object

@你认为呢?请随意写一个答案;)
u = np.where(v == 1, '100% Go', np.where(v == 0, '100% NoGo', 'Mixed Response Pattern'))
v[:] = u
v

ID
1                 100% NoGo
2                   100% Go
3    Mixed Response Pattern
Name: response_go, dtype: object