我的数据框如下:
%token <str> NAME
%type <number> expr
我正试图找到一种方法来检查哪些元素以&#39;&lt;&#39;或&#39;&#34;&#39;或&#39; _:&#39;并返回如下数据框:
<A> "B" C _:D <E>
A B "C" <D> E>
<A> "B" "C" D <E>
由于数据帧的大小,不使用apply。 理想情况下,我的最终数据框如下:
1 1 0 1 1
0 0 1 1 0
1 1 1 0 1
谢谢
答案 0 :(得分:7)
<强>更新强>
如何向原始数据帧添加包含1的总和的列 在堆栈中找到+ unstack?
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 1