Cách xóa các ký tự đặc biệt khỏi khung dữ liệu trong python

Các phương thức chuỗi trên Chỉ mục đặc biệt hữu ích để dọn dẹp hoặc chuyển đổi các cột DataFrame. Chẳng hạn, bạn có thể có các cột có khoảng trắng ở đầu hoặc cuối

In [9]: df = pd.DataFrame[randn[3, 2], columns=[' Column A ', ' Column B '],
   ...:                   index=range[3]]
   ...: 

In [10]: df
Out[10]: 
    Column A    Column B 
0    0.017428    0.039049
1   -2.240248    0.847859
2   -1.342107    0.368828

df. cột là một đối tượng Chỉ mục, chúng ta có thể sử dụng . trình truy cập str accessor

In [11]: df.columns.str.strip[]
Out[11]: Index[[u'Column A', u'Column B'], dtype='object']

In [12]: df.columns.str.lower[]
Out[12]: Index[[u' column a ', u' column b '], dtype='object']

Các phương thức chuỗi này sau đó có thể được sử dụng để dọn dẹp các cột khi cần thiết. Ở đây, chúng tôi đang xóa các khoảng trắng ở đầu và cuối, viết thường tất cả các tên và thay thế mọi khoảng trắng còn lại bằng dấu gạch dưới

In [13]: df.columns = df.columns.str.strip[].str.lower[].str.replace[' ', '_']

In [14]: df
Out[14]: 
   column_a  column_b
0  0.017428  0.039049
1 -2.240248  0.847859
2 -1.342107  0.368828

Tách và thay thế chuỗi¶

Các phương thức như split trả về một Chuỗi danh sách.

In [15]: s2 = pd.Series[['a_b_c', 'c_d_e', np.nan, 'f_g_h']]

In [16]: s2.str.split['_']
Out[16]: 
0    [a, b, c]
1    [c, d, e]
2          NaN
3    [f, g, h]
dtype: object

Có thể truy cập các phần tử trong danh sách phân tách bằng cách sử dụng get hoặc [] notation:

In [17]: s2.str.split['_'].str.get[1]
Out[17]: 
0      b
1      d
2    NaN
3      g
dtype: object

In [18]: s2.str.split['_'].str[1]
Out[18]: 
0      b
1      d
2    NaN
3      g
dtype: object

Dễ dàng mở rộng phần này để trả về DataFrame bằng cách sử dụng mở rộng .

In [19]: s2.str.split['_', expand=True]
Out[19]: 
     0     1     2
0    a     b     c
1    c     d     e
2  NaN  None  None
3    f     g     h

Cũng có thể giới hạn số lần chia

In [20]: s2.str.split['_', expand=True, n=1]
Out[20]: 
     0     1
0    a   b_c
1    c   d_e
2  NaN  None
3    f   g_h

rsplit tương tự như split ngoại trừ nó hoạt động theo hướng ngược lại, i. e. , từ cuối chuỗi đến đầu chuỗi.

In [21]: s2.str.rsplit['_', expand=True, n=1]
Out[21]: 
     0     1
0  a_b     c
1  c_d     e
2  NaN  None
3  f_g     h

Các phương thức như replacefindall nhận các biểu thức chính quy, .

In [5]: idx = pd.Index[[' jack', 'jill ', ' jesse ', 'frank']]

In [6]: idx.str.strip[]
Out[6]: Index[[u'jack', u'jill', u'jesse', u'frank'], dtype='object']

In [7]: idx.str.lstrip[]
Out[7]: Index[[u'jack', u'jill ', u'jesse ', u'frank'], dtype='object']

In [8]: idx.str.rstrip[]
Out[8]: Index[[u' jack', u'jill', u' jesse', u'frank'], dtype='object']
0

Một số thận trọng phải được thực hiện để ghi nhớ các biểu thức thông thường. Ví dụ: đoạn mã sau sẽ gây rắc rối vì ý nghĩa biểu thức chính quy của $

Chủ Đề