使用列中的条件遍历数据框

时间:2019-12-06 00:34:28

标签: python pandas dataframe for-loop

假设一个数据框如下:

+
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。

感谢您的慷慨捐助:)

3 个答案:

答案 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'