pandas Python:基于其他三列添加Dataframe列,其中两列用True/False填充

umuewwlo  于 2023-02-27  发布在  Python
关注(0)|答案(1)|浏览(128)

这是一个更大的 Dataframe 的模拟 Dataframe 。我有这个:
| 识别号|类别|装运T/F?|保持T/F?|
| - ------|- ------|- ------|- ------|
| 一百二十三|美国广播公司|假|假|
| 四百五十六|美国广播公司|假|真的|
| 七八九|美国广播公司|真的|假|
| 二百三十四|美国广播公司|真的|真的|
| 五六七|DEF|假|假|
| 六百七十八|DEF|假|假|
| 一百三十五|DEF|假|假|
| 二四六|DEF|假|假|
| 三六九|克热|真的|真的|
我想要这个:
| 识别号|类别|装运T/F?|保持T/F?|新山口|
| - ------|- ------|- ------|- ------|- ------|
| 一百二十三|美国广播公司|假|假|1个|
| 四百五十六|美国广播公司|假|真的|1个|
| 七八九|美国广播公司|真的|假|1个|
| 二百三十四|美国广播公司|真的|真的|无|
| 五六七|DEF|假|假|无|
| 六百七十八|DEF|假|假|无|
| 一百三十五|DEF|假|假|无|
| 二四六|DEF|假|假|无|
| 三六九|克热|真的|真的|无|
我的代码:

import pandas as pd
import numpy as np

data=[
    ['123','ABC', False, False],
    ['456','ABC', False, True],
    ['789','ABC', True, False],
    ['234','ABC', True, True],
    ['567','DEF', False, False],
    ['678','DEF', False, True],
    ['135','DEF', True, False],
    ['246','DEF', True, True],
    ['369','KGH', True, True]
]
df = pd.DataFrame(data,columns=['ID','Category','Shipped T/F?','Hold T/F?'])

Conditions = [
    (df['Category'] != 'ABC'),
    (df['Shipped T/F?'].bool==True and df['Hold T/F?'].bool==True)
    (df['Category'] == 'ABC')
]
values=[0,0,1]
df['NewCol'] = np.select(Conditions,values)

print(df)

这是我得到的错误:发生异常:类型错误"bool"对象不可调用文件"C:\Users\Johnr50\Documents\repos\SLHRoutine\testTFLkup.py",第19行,在(df ["是否已装运T/F?"]. bool == True和df ["是否保留T/F?"]. bool == True)类型错误:"bool"对象不可调用
我尝试了以下解决方案:https://www.learndatasci.com/solutions/python-valueerror-truth-value-series-ambiguous-use-empty-bool-item-any-or-all/https://www.dataquest.io/blog/tutorial-add-column-pandas-dataframe-based-on-if-else-condition/和其他几个形式的堆栈溢出,我不能再找到,因为我张贴这个问题。Update a df column based on three other columns values using a functionCreate New True/False Pandas Dataframe Column based on conditions

t40tm48m

t40tm48m1#

修改Conditions

Conditions = [
    df['Category'] != 'ABC',
    df['Shipped T/F?'] & df['Hold T/F?'],  # <- HERE
    df['Category'] == 'ABC'
]

输出:

>>> out
    ID Category  Shipped T/F?  Hold T/F?  NewCol
0  123      ABC         False      False       1
1  456      ABC         False       True       1
2  789      ABC          True      False       1
3  234      ABC          True       True       0
4  567      DEF         False      False       0
5  678      DEF         False       True       0
6  135      DEF          True      False       0
7  246      DEF          True       True       0
8  369      KGH          True       True       0

相关问题