Pandas 如果有一个循环
这有点奇怪,我没有一个示例数据帧,但如果有人能帮助的话,那就太好了 我有3列A、B和C C可能为空/nan 我是说,如果C是空的,A和B等于上面一行的A和B的值。然后将C设置为与上面一行的C相同的值 这就是我目前所拥有的。它正在运行,但不改变C的值Pandas 如果有一个循环,pandas,loops,if-statement,Pandas,Loops,If Statement,这有点奇怪,我没有一个示例数据帧,但如果有人能帮助的话,那就太好了 我有3列A、B和C C可能为空/nan 我是说,如果C是空的,A和B等于上面一行的A和B的值。然后将C设置为与上面一行的C相同的值 这就是我目前所拥有的。它正在运行,但不改变C的值 for i, row in df.iterrows(): if df['C'][i]==np.nan: if df[['A','B']][i]==df[['A','B']][i-1]: df['C']
for i, row in df.iterrows():
if df['C'][i]==np.nan:
if df[['A','B']][i]==df[['A','B']][i-1]:
df['C'][i]=df['C'][i-1]
else:
pass
else:
pass
有人知道为什么这可能不起作用吗
非常感谢
我也尝试过这个,但是这个代码根本不起作用
for i, row in df.iterrows():
if df['C'][i]==np.nan & df[['A','B']][i]==df[['A','B']][i-1]:
df['C'][i]=df['C'][i-1]
else:
pass
因此,df:
A B C
w 4 t
w 4
a r c
输出应为:
A B C
w 4 t
w 4 t
a r c
你应该尝试:
你应该尝试:
您可以使用:
df['C'] = np.where((df['A']==df['A'].shift()) & (df['B']==df['B'].shift()) & (df['C'].isnull()), df['C'].shift(), df['C'] )
您可以使用:
df['C'] = np.where((df['A']==df['A'].shift()) & (df['B']==df['B'].shift()) & (df['C'].isnull()), df['C'].shift(), df['C'] )
工作得很好。谢谢lot@fred.schwartz很乐意帮忙:}工作得很好。谢谢lot@fred.schwartz很乐意帮忙:}感谢下面的人,我得到了答案。如果有人看到这个循环出了什么问题,请发表评论,因为我现在真的很好奇,多亏了下面的人,我才得到了答案。如果有人看到循环出了什么问题,请发表评论,因为我现在真的很好奇