首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否根据自定义值分隔数据帧中的行?

是否根据自定义值分隔数据帧中的行?
EN

Stack Overflow用户
提问于 2020-04-28 17:42:44
回答 2查看 30关注 0票数 0

我有一个包含两列ab的df。

代码语言:javascript
复制
import pandas as pd

raw_data = {'a': ['2019145236792', 'abc_def date_1220', '2020124832852', 'jhi_abc this_1219_abc'], 
            'b': ['tom','john','mark','jim']} 

df = pd.DataFrame(raw_data, columns=['a', 'b']) 
df
         a                        b
0      2019145236792             tom
1      abc_def date_1220        john
2      2020124832852            mark
3      jhi_abc this_1219_abc20   jim

我想要分离只包含20的数据。20的位置不会改变。

例如:2020124832852abc_def date_1220

预期输出:

代码语言:javascript
复制
          a                    b
0      abc_def date_1220    john
1      2020124832852        mark
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-28 17:46:10

boolean indexing与comapre by Series.eqstr索引一起使用|链接的按位OR使用第二个掩码并将Series.str.extract用于date_之后的值

代码语言:javascript
复制
m1 = df['a'].str[2:4].eq('20')
m2 = df['a'].str.extract('date_(.*)', expand=False).str[2:4].eq('20')

df = df[m1 | m2]
print (df)
                   a     b
1  abc_def date_1220  john
2      2020124832852  mark

编辑:

代码语言:javascript
复制
m2 = df['a'].str.split('_', n=2).str[2].str[2:4].eq('20')
票数 1
EN

Stack Overflow用户

发布于 2020-04-28 18:08:22

您可以使用列表理解来获取所需的行,但必须指定所需的位置:

代码语言:javascript
复制
import re

req_pos = {2, 15}
df[[any(e.start() in req_pos for e in re.finditer('20', s)) for s in df.a]]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61477170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档