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抱歉这是块代码,我做了更改添加了一个方法:-)抱歉这是块代码,我做了更改这是块代码,我做了更改