首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫StartsWith多种选择

熊猫StartsWith多种选择
EN

Stack Overflow用户
提问于 2017-02-27 15:11:28
回答 1查看 1K关注 0票数 2

我有如下数据:

代码语言:javascript
复制
 <A>   "B"    C    _:D   <E>
  A     B    "C"    <D>   E>
 <A>   "B"   "C"     D   <E>

我试图找到一种方法来检查以'<‘或’‘或'_:’开头的元素,并返回如下数据:

代码语言:javascript
复制
  1     1     0     1     1
  0     0     1     1     0
  1     1     1     0     1

由于数据文件的大小而不使用apply。理想情况下,我的最后数据格式如下:

代码语言:javascript
复制
 <A>   "B"    C    _:D   <E>    4
  A     B    "C"    <D>   E>    2
 <A>   "B"   "C"     D   <E>    4

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 15:13:54

更新:

如何在原始数据中添加一个列,其中包含堆栈+解堆栈中的1s之和?

代码语言:javascript
复制
In [59]: df['new'] = df.stack().str.contains(r'^(?:\"|<|_:)').astype(np.uint8).sum(level=0)

In [60]: df
Out[60]:
     0    1    2    3    4  new
0  <A>  "B"    C  _:D  <E>    4
1    A    B  "C"  <D>   E>    2
2   A<   B"   C"    D   E<    0  # pay attention at this row

旧答案:

试试这个:

代码语言:javascript
复制
df.apply(lambda col: col.str.contains(r'^\"|<|_:').astype(np.uint8))

演示:

代码语言:javascript
复制
In [33]: df.apply(lambda col: col.str.contains(r'^\"|<|_:').astype(np.uint8))
Out[33]:
   0  1  2  3  4
0  1  1  0  1  1
1  0  0  1  1  0
2  1  1  1  0  1

或者使用stack() + unstack()

代码语言:javascript
复制
In [36]: df.stack().str.contains(r'^\"|<|_:').astype(np.uint8).unstack()
Out[36]:
   0  1  2  3  4
0  1  1  0  1  1
1  0  0  1  1  0
2  1  1  1  0  1
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42489172

复制
相关文章

相似问题

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