Pandas 在for循环中引用两个序列,然后根据它们的条件更新第一个序列-python

Pandas 在for循环中引用两个序列,然后根据它们的条件更新第一个序列-python,pandas,for-loop,if-statement,conditional,sequences,Pandas,For Loop,If Statement,Conditional,Sequences,尝试在python for循环中引用两个序列,例如: for (col1_row, col2_row) in (df.col1, df.col2) 然后检查两个条件是否为真: if col1_row = 'nan' and col2_row = '1000 Main Street' 然后使用设定值更新df.col1中的相应单元格: df.col1 == 'Chucky Cheeze Restaurant' 不必是for循环,但我想我会这样解释。寻找最快、最有效的方法。谢谢。我建议不要使用循

尝试在python for循环中引用两个序列,例如:

for (col1_row, col2_row) in (df.col1, df.col2)
然后检查两个条件是否为真:

if col1_row = 'nan' and col2_row = '1000 Main Street'
然后使用设定值更新df.col1中的相应单元格:

df.col1 == 'Chucky Cheeze Restaurant'

不必是for循环,但我想我会这样解释。寻找最快、最有效的方法。谢谢。

我建议不要使用循环,因为速度慢,最好与布尔掩码一起使用:

mask = (df.col1 == 'nan') & (df.col2 == '1000 Main Street')
#for oldier pandas versions
#mask = df.col1.isnull() & (df.col2 == '1000 Main Street')
df.col1 = np.where(mask, 'Chucky Cheeze Restaurant', df.col1)
或:


@spacedustpi关于
mask=(df.col1=='nan')&(df.col2=='1000 Main Street')
?很奇怪,后面没有空格?如何工作
print((df.col1=='nan'))
print(,((df.col2=='1000 Main Street'))
?似乎有些数据问题。想知道为什么第二个方法不起作用。还有,为什么添加parenz会改变第一个方法的执行结果?我可以看到这个方法的实用性。我可以通过添加更多的“mask=…”和“&”来添加更多的序列。这将是不断给予的礼物。
mask = df.col2 == '1000 Main Street'
df.loc[mask, 'col1'] = df.loc[mask, 'col1'].fillna('Chucky Cheeze Restaurant')