pandas在所有行的新列中使用数值替换特定字符串

时间:2018-03-03 15:29:50

标签: python python-3.x pandas dataframe

我有一个包含message列的数据框,我想创建一个列media,如果对于索引x,df.ix[x][message]=="<Media omitted>",那么我想要df.ix[x][media] = 1

例如对于dataframe:

index    message
1        hello
2        <Media omitted>
3        hello
4        <Media omitted>

我会得到:

index    message          media
1        hello             0
2        <Media omitted>   1
3        hello             0
4        <Media omitted>   1

我试图只使用循环,但我确信有更智能,更快捷的方法。

2 个答案:

答案 0 :(得分:1)

试试这个:

df['media'] = (df['message'] == '<Media omitted>').astype(int)

<强>解释

  • df['message'] == '<Media omitted>'创建一个布尔系列。
  • astype(int)将布尔系列转换为整数类型以用于显示目的。

答案 1 :(得分:1)

我认为你需要通过astype将{}}布尔掩码转换为int

df['media'] = (df['message'] == '<Media omitted>').astype(int)
#very similar alternative
#df['media'] = df['message'].eq('<Media omitted>').astype(int)
print (df)
               message  media
index                        
1                hello      0
2      <Media omitted>      1
3                hello      0
4      <Media omitted>      1