有条件的按行和按列替换字符串

时间:2019-07-25 19:12:43

标签: python string pandas dataframe

给出以下df:

df_test = pd.DataFrame({'0' : ['find expert model','NR','R','NR'],
               '1' : ["news recommend", "NR" ,"NR", "NR"],
               '2' : ["a recommend", "R" , "NR", "NR"],
               '3' : ["a web recommend", "R", "NR", "R"]})
df_test

    0                   1               2           3
0   find expert model   news recommend  a recommend a web recommend
1   NR                  NR              R           R
2   R                   NR              NR          NR
3   NR                  NR              NR          R

我正在尝试获得这种形式的df:

    0                   1               2           3
0   NR                  NR              a recommend a web recommend
1   find expert model   NR              NR          NR
2   NR                  NR              NR          a web recommend

此处的目标是用特定列第一行中的字符串替换某个单元格中的每个字符串R。替换过程应从索引为1的行开始。

有什么想法吗?预先感谢!

2 个答案:

答案 0 :(得分:2)

使用applyreplacedrop尝试一下:

df_test.apply(lambda x: x.replace('R', x.iloc[0])).drop(0).reset_index(drop=True)

输出:

                   0   1            2                3
0                 NR  NR  a recommend  a web recommend
1  find expert model  NR           NR               NR
2                 NR  NR           NR  a web recommend

答案 1 :(得分:2)

尝试一下:

for col in df.columns:
    df.loc[df[col] == 'R', col] = df.loc[0, col]
df = df.drop(0)
df.reset_index(drop=True, inplace=True)

结果:

                   0               1            2                3
0                 NR              NR  a recommend  a web recommend
1  find expert model              NR           NR               NR
2                 NR              NR           NR  a web recommend