基于正则表达式创建两个数据框

时间:2018-07-02 05:26:24

标签: python pandas

这里是数据框的一小部分,我想分成两个单独的数据框。

  No    Code         Name Rem Last Done   LACP     Chg  % Chg Vol ('00)  \
0  1    0012       3A [S]   s     0.940  0.940       -      -        20   
1  2    7054    AASIA [S]   s         -  0.205       -      -         -   
2  3    5238      AAX [S]   s     0.345  0.340   0.005  +1.47    37,806   
3  4  5238WA   AAX-WA [S]   s     0.135  0.135       -      -       590   
4  5    7086  ABLEGRP [S]   s     0.095  0.100  -0.005  -5.00       300   

我想基于以下python正则表达式的匹配或不匹配来过滤“代码”列:

"^[0-9]{1,5}$"

1 个答案:

答案 0 :(得分:2)

str.containsboolean indexing一起使用,~用于反转布尔掩码:

m = df['Code'].str.contains("^[0-9]{1,5}$")

df1 = df[m]
print (df1)
   No  Code     Name  Rem Last   Done   LACP     Chg  % Chg Vol ('00)
0   1  0012       3A  [S]    s  0.940  0.940       -      -        20
1   2  7054    AASIA  [S]    s      -  0.205       -      -         -
2   3  5238      AAX  [S]    s  0.345  0.340   0.005  +1.47    37,806
4   5  7086  ABLEGRP  [S]    s  0.095  0.100  -0.005  -5.00       300

df2 = df[~m]
print (df2)
   No    Code    Name  Rem Last   Done   LACP Chg % Chg Vol ('00)
3   4  5238WA  AAX-WA  [S]    s  0.135  0.135   -     -       590

详细信息

print (m)
0     True
1     True
2     True
3    False
4     True
Name: Code, dtype: bool

print (~m)
0    False
1    False
2    False
3     True
4    False
Name: Code, dtype: bool