通过将每一行用作列表,在数据帧外创建for语句



我有一个数据帧

df:

A   B   C   D   E
R   1   0.5 YES YTD
A   0   0.7 No  QTD
H   1   0.9 YES MTD
U   1   0.9 No  MTD
L   0   0.2 YES QTD

我试图读取这个数据帧,目的是根据提供的值创建变量。

例如:

row_list = [] 
for index, row in df.iterrows():
my_list =[row['A'], row['B'], row['C'], row['D'], row['E'], row['F']]
row_list.append(my_list) 
row_list

现在,我必须分配这样的变量。这似乎不是一种合理的赋值方式。

A = row_list[0][0]
B = row_list[0][1]
C = row_list[0][2]
D = row_list[0][3]
E = row_list[0][4]

我如何使用上面的数据帧为数据帧的每一行创建一个if语句:

for i in row_list:
<do something if A = 'R'>
<do something if B = 1>
<do something if C > 0.5 >
<do something if D = 'YES'>
<do something if E = 'QTD'>

为了使执行更容易、更自动化,我在这里缺少了什么?

我想,这就是你想要的:

# Pseudo code:
# if A equals 'R':
#     D = 'YES'
# else:
#     D = 'No'

这样做吗:

df['D'] = df['A'].apply(lambda x: 'YES' if x == 'R' else 'No')  

也一样:

df['D'] = where(df['A'] == 'R', 'YES', 'No')

这将自动应用于所有行。您不必对它们进行迭代。

最新更新