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

问题描述 投票:0回答:2

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

例如,对于数据帧:

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

我试图只使用一个循环,但我确信有一个更聪明,更快的方法。

python python-3.x pandas dataframe
2个回答
1
投票

试试这个:

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

说明

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

1
投票

我认为你需要通过int将boolean mask转换为astype

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
© www.soinside.com 2019 - 2024. All rights reserved.