pandas在一列上替换多个值(您不知道)

时间:2018-01-10 18:08:55

标签: pandas data-cleaning

更改列中的多个值(“状态”)的最佳方法是什么?这两个值与您要分析的仅两个值不同?
举个例子,我的df是:

git show
commit 429c7abcede0cd8874b70f2c37ea8f8e3e2d57e1 (HEAD -> CoreMigration, origin/CoreMigration)

最后,我希望:

Id  Status  Email   Product Age
1   ok          g@      A       20
5   not ok      l@      J       45
1   A           a@      A       27
2   B           h@      B       25 
2   ok          t@      B       33
3   C           b@      E       23
4   not ok      c@      D       30

最大的困难是我的df非常大,所以我不知道所有其他的值与'ok'和'not ok'不同(我想要分析的值)。 提前谢谢!

2 个答案:

答案 0 :(得分:2)

np.where + isin

df.Status=np.where(df.Status.isin(['ok','not ok']),df.Status,'Others')
df
Out[384]: 
   Id  Status Email Product  Age
0   1      ok    g@       A   20
1   5  not ok    l@       J   45
2   1  Others    a@       A   27
3   2  Others    h@       B   25
4   2      ok    t@       B   33
5   3  Others    b@       E   23
6   4  not ok    c@       D   30

答案 1 :(得分:0)

使用申请

df['Status'] = df.apply(lambda x: 'other' if x['Status'] not in ['ok', 'not ok'] else x['Status'], axis=1)