假设一个数据框如下:
+
df=pd.DataFrame({'word':['Hello','Beautiful','World','Work'],'classification':['none','none','noun','none'],'pos':[0,1,2,3]}
如何在不创建其他数据框的情况下遍历分类字段以替换该字段?
word classification pos
0 Hello none 0
1 Beautiful none 1
2 World noun 2
3 Work none 3
我需要遍历数据框,因为在分类中我将拥有不同的值,而通过调用另一个进程可以得到不同的值。我想摆脱刚刚创建的用于过滤df_none= df[df.classification=='none']
for i, row in df_none.iterrows():
df_none['classification'][i]='any'
df.loc[df_none.index,"classification"] = df_none["classification"]
print(df)
值的其他数据帧df_none。
感谢您的慷慨捐助:)
答案 0 :(得分:0)
直接loc
分配。我还会处理字符串none
具有blank
的情况,例如' none'
或' none '
df.loc[df.classification.str.strip().eq('none'), 'classification'] = 'any'
In [280]: df
Out[280]:
word classification pos
0 Hello any 0
1 Beautiful any 1
2 World noun 2
3 Work any 3
答案 1 :(得分:0)
您可以尝试:
df.loc[df['classification'].eq('none'),'classification'] = 'any'
df.at[df['classification'].eq('none'),'classification'] = 'any'
或者,类似于您当前的方法:
for i,row in df.iterrows():
if row['classification'] == 'none':
df.at[i,'classification'] = 'any'
答案 2 :(得分:0)
怎么样
df.loc[df['classification'] == 'none', 'classification'] = 'any'