我有一个列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
我试图只使用一个循环,但我确信有一个更聪明,更快的方法。
试试这个:
df['media'] = (df['message'] == '<Media omitted>').astype(int)
说明
df['message'] == '<Media omitted>'
创建了一个布尔系列。astype(int)
将布尔系列转换为整数类型以用于显示目的。我认为你需要通过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