Python 如何使用if条件循环遍历数据帧列表并指定列
我有一个数据帧列表,我想循环查看并检查特定字符串是否位于Python 如何使用if条件循环遍历数据帧列表并指定列,python,pandas,dataframe,if-statement,contains,Python,Pandas,Dataframe,If Statement,Contains,我有一个数据帧列表,我想循环查看并检查特定字符串是否位于id列中。如果是,则获取该行的索引,并为该索引下的每一行指定一个新列和名称yes。如果id列在该列中不存在,则跳过该数据帧并分配另一个条件。我的示例代码如下: sample_df_2 = pd.DataFrame(data={ 'id': ['A', 'B', 'C','G','D','E'], 'n' : [ 1, 2, 3, 5, 5, 9], 'v' : [ 10, 13, 8, 8, 4 , 3]
id
列中。如果是,则获取该行的索引,并为该索引下的每一行指定一个新列和名称yes
。如果id
列在该列中不存在,则跳过该数据帧并分配另一个条件。我的示例代码如下:
sample_df_2 = pd.DataFrame(data={
'id': ['A', 'B', 'C','G','D','E'],
'n' : [ 1, 2, 3, 5, 5, 9],
'v' : [ 10, 13, 8, 8, 4 , 3],
'z' : [5, 3, 6, 9, 9, 8]
})
sample_df_1 = pd.DataFrame(data={
'id': ['L', 'K', 'C','G','D','E'],
'n' : [ 1, 2, 3, 5, 5, 9],
'v' : [ 10, 13, 8, 8, 4 , 3],
'z' : [5, 3, 6, 9, 9, 8]
})
def assign_new_column(data_frame):
if data_frame['id'].str.contains('A','C').any():
index_A=data_frame[data_frame['id']=='A'].index.tolist()
index_C=data_frame[data_frame['id']=='C'].index.tolist()
data_frame['Yes']=np.select([data_frame.index<=index_A],['Yeaaap'])
data_frame['No']=np.select([data_frame.index<=index_C],['Yeaaap'])
else:
index_G=data_frame[data_frame['id']=='G'].index.tolist()
index_D=data_frame[data_frame['id']=='D'].index.tolist()
data_frame['Yes']=np.select([data_frame.index<=index_G],['Noop'])
data_frame['No']=np.select([data_frame.index<=index_D],['supp'])
return data_frame
index=sample_df[sample_df['id']=='A'].index.tolist()
df=[]
for i in range(len(df_list)):
df.append(assign_new_column(df_list[i]))
pd.concat(df)
但这是不正确的,因为它有点覆盖字符串
有谁能帮我以有效的方式解决这个问题吗?请发布您的预期结果
id n v z Yes No
0 A 1 10 5 Yeaaap Yeaaap
1 B 2 13 3 0 Yeaaap
2 C 3 8 6 0 Yeaaap
3 G 5 8 9 0 0
4 D 5 4 9 0 0
5 E 9 3 8 0 0
0 L 1 10 5 Noop supp
1 K 2 13 3 Noop supp
2 C 3 8 6 Noop supp
3 G 5 8 9 Noop supp
4 D 5 4 9 0 supp
5 E 9 3 8 0 0