根据其他列中的匹配单词创建熊猫列

罗布罗克

我有一个包含多个物质列的数据框,如下所示:

import random

values = ['oil', 'gas', 'water']
modifier = ['dirty', 'crude', 'fuel']
wordzip = [modifier, values]

data = [[wordzip[0][random.randint(0,2)] + ' ' + wordzip[1][random.randint(0,2)] for c in wordzip[0]] for i in range(7)]

pd.DataFrame(data = data, columns = ['A', 'B', 'C'])

             A            B            C   
0    dirty gas    crude oil  dirty water 
1  dirty water     fuel gas    dirty gas  
2  dirty water     fuel gas    dirty oil  
3     fuel oil  crude water    crude gas  
4  dirty water     fuel oil  dirty water  
5    crude oil   fuel water    dirty oil
6   fuel water    crude gas  crude water 

我想创建一个新列,这些列中的值包含单词“ oil”。因此,最终的df应该如下所示:

             A            B            C          D
0    dirty gas    crude oil  dirty water  crude oil
1  dirty water     fuel gas    dirty gas  NaN
2  dirty water     fuel gas    dirty oil  dirty oil
3     fuel oil  crude water    crude gas  fuel oil
4  dirty water     fuel oil  dirty water  fuel oil
5    crude oil   fuel water    dirty oil  crude oil
6   fuel water    crude gas  crude water  NaN

我试过了,df[['A', 'B', 'C']].apply(lambda x: x.str.contains('oil'))但是返回的是布尔型数据框,而不是值本身。

cs95

让我们使用stack+ extract

df['D'] = df.stack().str.extract(r'(.* oil)').groupby(level=0).first()[0]
df
             A            B            C          D
0    dirty gas    crude oil  dirty water  crude oil
1  dirty water     fuel gas    dirty gas        NaN
2  dirty water     fuel gas    dirty oil  dirty oil
3     fuel oil  crude water    crude gas   fuel oil
4  dirty water     fuel oil  dirty water   fuel oil
5    crude oil   fuel water    dirty oil  crude oil
6   fuel water    crude gas  crude water        NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章