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
Vì 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ư replace và findall 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 $