我有如下数据:
<A> "B" C _:D <E>
A B "C" <D> E>
<A> "B" "C" D <E>我试图找到一种方法来检查以'<‘或’‘或'_:’开头的元素,并返回如下数据:
1 1 0 1 1
0 0 1 1 0
1 1 1 0 1由于数据文件的大小而不使用apply。理想情况下,我的最后数据格式如下:
<A> "B" C _:D <E> 4
A B "C" <D> E> 2
<A> "B" "C" D <E> 4谢谢
发布于 2017-02-27 15:13:54
更新:
如何在原始数据中添加一个列,其中包含堆栈+解堆栈中的1s之和?
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旧答案:
试试这个:
df.apply(lambda col: col.str.contains(r'^\"|<|_:').astype(np.uint8))演示:
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()
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 1https://stackoverflow.com/questions/42489172
复制相似问题