Python 将所有行的新列中的特定字符串替换为数值
我有一个数据框,其中有一列Python 将所有行的新列中的特定字符串替换为数值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据框,其中有一列消息,我想创建一列媒体,这样,如果对于索引x,df.ix[x][message]==”,那么我想df.ix[x][media]=1 例如,对于数据帧: index message 1 hello 2 <Media omitted> 3 hello 4 <Media omitted> 索引消息 你好 2. 3你好 4. 我会得到: index message
消息
,我想创建一列媒体
,这样,如果对于索引x,df.ix[x][message]==”
,那么我想df.ix[x][media]=1
例如,对于数据帧:
index message
1 hello
2 <Media omitted>
3 hello
4 <Media omitted>
索引消息
你好
2.
3你好
4.
我会得到:
index message media
1 hello 0
2 <Media omitted> 1
3 hello 0
4 <Media omitted> 1
索引消息媒体
1你好0
2 1
3你好0
4 1
我尝试仅通过使用循环来实现这一点,但我相信有一种更智能、更快的方法。试试这个:
df['media'] = (df['message'] == '<Media omitted>').astype(int)
df['media']=(df['message']='').astype(int)
解释
创建一个布尔序列df['message']=''
出于显示目的,将布尔序列强制转换为整数类型astype(int)
df['media'] = (df['message'] == '<Media omitted>').astype(int)
df['media']=(df['message']='').astype(int)
解释
创建一个布尔序列df['message']=''
出于显示目的,将布尔序列强制转换为整数类型astype(int)
int
:
df['media']=(df['message']='').astype(int)
#非常相似的替代方案
#df['media']=df['message'].eq('').astype(int)
打印(df)
信息媒体
指数
1你好0
2 1
3你好0
4 1
我认为您需要通过以下方式将布尔掩码转换为int
:
df['media']=(df['message']='').astype(int)
#非常相似的替代方案
#df['media']=df['message'].eq('').astype(int)
打印(df)
信息媒体
指数
1你好0
2 1
3你好0
4 1
如果我想对两个不同的字符串值使用相同的值?像是'
和这个字符串也是?我尝试使用or运算符,但不起作用。请尝试使用isin
:df['media']=(df['message'].isin({'','thistringtoo'})。astype(int)
如果我想对两个不同的字符串值使用相同的值,比如'
和thisstringtoo
?我尝试使用or运算符,但没有效果。尝试使用isin
:df['media']=(df['message'].isin({'','thisstringtoo')。astype(int)