如何在pandas(Python)中评估类别而不是书籍?
我完全重新提出了我的问题。我敢肯定,这样做现在更有意义了 我有以下条件:如何在pandas(Python)中评估类别而不是书籍?,python,pandas,dataframe,Python,Pandas,Dataframe,我完全重新提出了我的问题。我敢肯定,这样做现在更有意义了 我有以下条件:logic1&(logic2 | logic3)&logic4。 如果至少有一本书满足条件,则属于类别的所有书籍都应标记为已评估。如何为每个类别ID执行此操作 评估的逻辑类别 logic1 = (books['CategoryPopulair'] == True) logic2 = (books['BookTitle'] == 'Hello1') & (books['BookRead'] == True) &
logic1&(logic2 | logic3)&logic4
。
如果至少有一本书满足条件,则属于类别的所有书籍都应标记为已评估
。如何为每个类别ID
执行此操作
评估的逻辑类别
logic1 = (books['CategoryPopulair'] == True)
logic2 = (books['BookTitle'] == 'Hello1') & (books['BookRead'] == True) & (books['BookNice'] == True)
logic3 = (books['BookTitle'].isin(['Hello2', 'Hello3'])) & (books['BookNice'] == True) & (books['BookOld'] == True)
logic4 = (books['BookYear'].isin([393, 1962, 1964, 3295]))
输入
| CategoryID | BookID | BookStatus | BookTitle | BookRead | BookNice | BookOld | BookYear | CategoryPopulair |
|------------|--------|------------|-----------|----------|----------|---------|----------|------------------|
| 337830 | 1 | 4 | Hello1 | TRUE | TRUE | TRUE | 1964 | TRUE |
| 337830 | 2 | 4 | Hello2 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 3 | 1 | Hello3 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 4 | 1 | Hello4 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 5 | 1 | Hello5 | | TRUE | FALSE | 1964 | TRUE |
| 337830 | 6 | 1 | Hello6 | | TRUE | FALSE | 1964 | TRUE |
| 337830 | 7 | 1 | Hello7 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 8 | 1 | Hello8 | | TRUE | FALSE | 1964 | TRUE |
| 337830 | 9 | 1 | Hello9 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 10 | 1 | Hello10 | | TRUE | FALSE | 1964 | TRUE |
| 337830 | 11 | 1 | Hello11 | | TRUE | TRUE | 1964 | TRUE |
| 337830 | 12 | 1 | Hello12 | | TRUE | TRUE | 1964 | TRUE |
| 331232 | 1 | 4 | Hello1 | TRUE | TRUE | TRUE | 1964 | TRUE |
| 331232 | 2 | 4 | Hello2 | TRUE | TRUE | TRUE | 1964 | TRUE |
| 331232 | 13 | 1 | Hello13 | | TRUE | TRUE | 1964 | TRUE |
| 331232 | 14 | 1 | Hello14 | | TRUE | TRUE | 1964 | TRUE |
| 331232 | 5 | 1 | Hello5 | | TRUE | FALSE | 1964 | TRUE |
| 331232 | 6 | 1 | Hello6 | | TRUE | FALSE | 1964 | TRUE |
| 331232 | 15 | 1 | Hello15 | | TRUE | TRUE | 1964 | TRUE |
| 331232 | 8 | 1 | Hello8 | | TRUE | FALSE | 1964 | TRUE |
| 331232 | 9 | 1 | Hello9 | TRUE | TRUE | TRUE | 1964 | TRUE |
| 331232 | 10 | 1 | Hello10 | | TRUE | FALSE | 1964 | TRUE |
| 331232 | 17 | 1 | Hello17 | TRUE | TRUE | TRUE | 1964 | TRUE |
| 331232 | 16 | 1 | Hello16 | | TRUE | TRUE | 1964 | TRUE |
我需要的输出(参见列类别评估)
带有CategoryID的BookOld
的BookOld
列中的FALSE导致CategoryEvaluated
为FALSE
| CategoryID | BookID | BookStatus | BookTitle | BookRead | BookNice | BookOld | BookYear | CategoryPopulair | CategoryEvaluated |
|------------|--------|------------|-----------|----------|----------|---------|----------|------------------|-------------------|
| 337830 | 1 | 4 | Hello1 | TRUE | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 2 | 4 | Hello2 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 3 | 1 | Hello3 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 4 | 1 | Hello4 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 5 | 1 | Hello5 | | TRUE | FALSE | 1964 | TRUE | TRUE |
| 337830 | 6 | 1 | Hello6 | | TRUE | FALSE | 1964 | TRUE | TRUE |
| 337830 | 7 | 1 | Hello7 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 8 | 1 | Hello8 | | TRUE | FALSE | 1964 | TRUE | TRUE |
| 337830 | 9 | 1 | Hello9 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 10 | 1 | Hello10 | | TRUE | FALSE | 1964 | TRUE | TRUE |
| 337830 | 11 | 1 | Hello11 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 337830 | 12 | 1 | Hello12 | | TRUE | TRUE | 1964 | TRUE | TRUE |
| 331232 | 1 | 4 | Hello1 | TRUE | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 2 | 4 | Hello2 | TRUE | TRUE |->FALSE<-| 1964 | TRUE | FALSE |
| 331232 | 13 | 1 | Hello13 | | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 14 | 1 | Hello14 | | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 5 | 1 | Hello5 | | TRUE | FALSE | 1964 | TRUE | FALSE |
| 331232 | 6 | 1 | Hello6 | | TRUE | FALSE | 1964 | TRUE | FALSE |
| 331232 | 15 | 1 | Hello15 | | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 8 | 1 | Hello8 | | TRUE | FALSE | 1964 | TRUE | FALSE |
| 331232 | 9 | 1 | Hello9 | TRUE | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 10 | 1 | Hello10 | | TRUE | FALSE | 1964 | TRUE | FALSE |
| 331232 | 17 | 1 | Hello17 | TRUE | TRUE | TRUE | 1964 | TRUE | FALSE |
| 331232 | 16 | 1 | Hello16 | | TRUE | TRUE | 1964 | TRUE | FALSE |
| CategoryID | BookID | BookStatus | BookTitle | BookRead | BookNice | BookOld | BookYear | CategoryPopulair |类别评估|
|------------|--------|------------|-----------|----------|----------|---------|----------|------------------|-------------------|
|337830 | 1 | 4 |你好|真|真|真|真| 1964 |真|真|
|337830 | 2 | 4 |你好|真|真|真| 1964 |真|真|
|337830 | 3 | 1 |你好|真|真|真| 1964 |真|真|
|337830 | 4 | 1 |你好|真|真|真| 1964 |真|真|
|337830 | 5 | 1 |你好|真|假| 1964 |真|真|
|337830 | 6 | 1 |你好|真|假| 1964 |真|真|
|337830 | 7 | 1 |你好|真|真|真| 1964 |真|真|
|337830 | 8 | 1 |你好|真|假| 1964 |真|真|
|337830 | 9 | 1 |你好|真|真|真| 1964 |真|真|
|337830 | 10 | 1 |你好|真|假| 1964 |真|真|
|337830 | 11 | 1 |你好|真|真|真| 1964 |真|真|
|337830 | 12 | 1 |你好|真|真|真| 1964 |真|真|
|331232 | 1 | 4 |你好|对|对|对|对| 1964 |对|错|
|331232 | 2 | 4 | Hello2 | TRUE | TRUE |->FALSE编辑以更好地回答您的问题
因为any()
可能有点棘手,我倾向于创建一个布尔列,然后按组计算。您将对每本书执行所有逻辑,然后检查是否有任何书满足标准
books['FitsLogic'] = logic1 & (logic2 | logic3) & logic4
books['CategoryEvaluted'] = books['FitsLogic'].groupby(books['CategoryID']).transform(
lambda x: True if any(x) else False)
你真的应该举个例子。我怀疑你不想以图片的形式得到答案,所以不要自己发布图片。请添加输入和所需输出的示例。我基本上想做worlds['BlaIsC']=logic1&(logic2 | logic3)和logic4
perBlaID
,而不是每一行。我希望问题的第一段更清楚一点。我将尝试改进我的问题。抱歉把你们搞糊涂了…我该把我的逻辑放在哪里?这帮了我的忙。非常感谢你!没问题!这是我不得不多次处理的问题。