在Pandas中使用If语句所有Dataframe值

时间:2017-07-24 16:39:50

标签: pandas

我有一个像这样的数据帧:

  col0  col1  col2
0     0     1     1
1     1     1     1
2     1     0     1
3     0     0     1

我想对所有值使用条件语句。

陈述是1 = a,0 = b

所以我希望得到这样的结果:

   col0 col1 col2
0   b    a    a
1   a    a    a
2   a    b    a
3   b    b    a

我知道pandas提供布尔函数。 (ex)dfs = df> 0

但我不知道如何解决这个问题。 我试过应用函数来解决这个问题。 但我失败了。 如果你能给我一个提示,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您在询问选项3,但我认为选项1是执行此操作的最佳方法。

选项1

使用replace和字典:

df.replace({0:'b',1:'a'})

输出:

  col0 col1 col2
0    b    a    a
1    a    a    a
2    a    b    a
3    b    b    a

选项2

使用np.where

构建新的数据框
pd.DataFrame(np.where(df,'a','b'), index=df.index, columns=df.columns)

输出:

  col0 col1 col2
0    b    a    a
1    a    a    a
2    a    b    a
3    b    b    a

选项3

使用applymap和lambda函数:

df.applymap(lambda x: 'a' if x == 1 else 'b')

输出:

  col0 col1 col2
0    b    a    a
1    a    a    a
2    a    b    a
3    b    b    a