【问题标题】:iterate and condition in python pandaspython pandas中的迭代和条件
【发布时间】:2019-04-27 21:28:30
【问题描述】:
shipportMD=pd.read_csv('shipportMD.csv')

for importName in shipportMD['importName'].unique():
    if (len(shipportMD['ItemDecision']=='Accepted')>len(shipportMD['ItemDecision']=='Rejected')):
        print (shipportMD['importName'])

如果ItemDecision'Accepted' 值多于'Rejected',我需要打印importName 值。

所以,例如:

importName : x,y,x,x

ItemDecision:拒绝、接受、拒绝、接受。

所以x 有 2 个被拒绝,1 个被接受。

【问题讨论】:

    标签: python python-3.x pandas dataframe conditional-statements


    【解决方案1】:

    您可以使用pd.crosstab,然后使用布尔掩码:

    df = pd.DataFrame({'ID': [1, 1, 1, 1, 2, 2, 2, 2],
                       'Decision': ['Accepted', 'Rejected', 'Rejected', 'Rejected',
                                    'Accepted', 'Accepted', 'Rejected', 'Accepted']})
    
    df_ct = pd.crosstab(df['ID'], df['Decision'])
    
    condition = df_ct['Accepted'] > df_ct['Rejected']
    
    res = df_ct[condition].index  
    # Int64Index([2], dtype='int64', name='ID')
    

    或者对交叉表结果执行您选择的计算:

    print(df_ct)
    
    Decision  Accepted  Rejected
    ID                          
    1                1         3
    2                3         1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 2022-01-22
      • 2011-05-25
      • 1970-01-01
      • 2015-04-04
      • 2021-09-17
      相关资源
      最近更新 更多