在Pandas的特定列上用值替换数据框的某些行

时间:2020-10-07 20:45:39

标签: python pandas

制作数据框:

df = pd.DataFrame({'A': [0, 1, 2, 3, 4], 'B': [5, 6, 7, 8, 9], 'C': ['a', 'b', 'c', 'd', 'e']})

看起来像:

    A   B   C
0   0   5   a
1   1   6   b
2   2   7   c
3   3   8   d
4   4   9   e

新建一列:

df["coolness"] = "no"

看起来像:

    A   B   C   coolness
0   0   5   a   no
1   1   6   b   no
2   2   7   c   no
3   3   8   d   no
4   4   9   e   no

需要在“ coolness”列中将某些行替换为“ yes”。

尝试:

 df["coolness"].replace([0, 1, 3], "yes")

但是不起作用。给出:

0    no
1    no
2    no
3    no
4    no

与此同时:

df.replace([0, 1, 3], "yes")

只在第一列上做

    A   B   C   coolness
0   yes 5   a   no
1   yes 6   b   no
2   2   7   c   no
3   yes 8   d   no
4   4   9   e   no

2 个答案:

答案 0 :(得分:1)

您的意思是:

df.loc[[0,1,3], 'coolness'] = 'yes'

答案 1 :(得分:0)

如果0,1,3是索引,则

    df.loc[[0,1,3], 'coolness'] = 'yes'

如果0 1 3是A列的值

    def app(x):
      if x["A"]==0 or x["A"]==1 or x["A"]==3:
        x['coolness']="yes"
      return x
    f=f.apply(app,axis=1)
    f

两种情况下的结果

    A   B   C   coolness
0   0   5   a   yes
1   1   6   b   yes
2   2   7   c   no
3   3   8   d   yes
4   4   9   e   no