Python 基于数据帧值的if和elif条件

Python 基于数据帧值的if和elif条件,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我正在尝试基于数据框中存在的列创建一个新列。这是示例数据 ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_CODE_1 BLOCK_CODE_2 0 523 1 0 A C A 1 523 2 1 I A D 2 521

我正在尝试基于数据框中存在的列创建一个新列。这是示例数据

     ORG   CHAIN_NBR  SEQ_NBR     INT_STATUS  BLOCK_CODE_1  BLOCK_CODE_2
0   523         1        0          A             C             A
1   523         2        1          I             A             D
2   521         3        1          A             H             F
3   513         4        1          D             H             Q
4   513         5        1          8             I             M
这是我正在执行的代码:

df=pd.read_csv("rtl_one", sep="\x01")


    def risk():
        if df['INT_STATUS'].isin(['B','C','F','H','P','R','T','X','Z','8','9']):
            df['rcut'] = '01'
        elif df['BLOCK_CODE_1'].isin(['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']):
            df['rcut'] = '02' 
        elif df["BLOCK_CODE_2"].isin(['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']):
            df['rcut'] == '03'

        else:
            df['rcut'] = '00'

    risk()
输出数据应如下所示:

     ORG   CHAIN_NBR  SEQ_NBR   INT_STATUS  BLOCK_CODE_1  BLOCK_CODE_2 rcut 
0   523         1        0          A             C             A      02
1   523         2        1          I             A             D      02
2   521         3        1          A             H             F      03
3   513         4        1          D             H             Q      00
4   513         5        1          8             I             M      01

使用iterrows并将结果存储在列表中,然后可以将该列表作为列附加到数据帧:

rcut = []

for i, row in df.iterrows():
    if row['INT_STATUS'] in ['B','C','F','H','P','R','T','X','Z','8','9']:
        rcut.append('01')
    elif row['BLOCK_CODE_1'] in ['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']:
        rcut.append('02')
    elif row['BLOCK_CODE_1'] in ['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']:
        rcut.append('03')
    else:
        rcut.append('00')
df['rcut'] = rcut

(注意:您的第二个和第三个条件是相同的,我在这里重复使用了您的代码,因此您必须进行更改)

使用iterrows并将结果存储在列表中,然后您可以将其作为列附加到数据框中:

rcut = []

for i, row in df.iterrows():
    if row['INT_STATUS'] in ['B','C','F','H','P','R','T','X','Z','8','9']:
        rcut.append('01')
    elif row['BLOCK_CODE_1'] in ['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']:
        rcut.append('02')
    elif row['BLOCK_CODE_1'] in ['A','B','C','D','E','F','G','I','J','K','L','M', 'N','O','P','R','U','W','Y','Z']:
        rcut.append('03')
    else:
        rcut.append('00')
df['rcut'] = rcut

(注意:您的第二个和第三个条件是相同的,我在这里重用了您的代码,因此您必须更改它)

使用.index添加一个新列,df['rcut']=df.index
然后在if-elif条件中使用df.insert(索引,'rcut',value)

使用.index添加一个新列,df['rcut']=df.index
然后在if-elif条件中使用df.insert(索引,'rcut',value)

你的第二个和第三个条件是一样的?@wen抱歉这是块代码,我做了更改添加了一个方法:-)你的第二个和第三个条件是一样的?@wen抱歉这是块代码,我做了更改添加了一个方法:-)抱歉这是块代码,我做了更改这是块代码,我做了更改