2015-04-25 34 views
5

Tôi gặp sự cố khi cố gắng lấy cột số ký tự của các giá trị chuỗi trong một cột khác và không tìm ra cách thực hiện hiệu quả.Thêm cột DataFrame với len() của các giá trị khác của cột

for index in range(len(df)): 
    df['char_length'][index] = len(df['string'][index])) 

Điều này dường như trước tiên tạo cột rỗng và sau đó viết lại và mất nhiều thời gian trên tập dữ liệu của tôi. Vì vậy, cách hiệu quả nhất để nhận một cái gì đó như là

'string'  'char_length' 
abcd   4 
abcde   5 

Tôi đã kiểm tra một chút, nhưng tôi đã không thể tìm ra.

Trả lời

9

Pandas có vectorised string method cho điều này: str.len(). Để tạo cột mới, bạn có thể viết:

df['char_length'] = df['string'].str.len() 

Ví dụ:

>>> df 
    string 
0 abcd 
1 abcde 

>>> df['char_length'] = df['string'].str.len() 
>>> df 
    string char_length 
0 abcd   4 
1 abcde   5 

này cần được nhanh hơn đáng kể so với vòng lặp qua DataFrame với Python for vòng lặp.

Nhiều phương thức chuỗi quen thuộc khác từ Python đã được đưa vào Pandas. Ví dụ: lower (để chuyển đổi sang chữ thường), count để đếm số lần xuất hiện của một chuỗi con cụ thể và replace để hoán đổi một chuỗi con với chuỗi con khác.

1

Đây là một cách để thực hiện.

In [3]: df 
Out[3]: 
    string 
0 abcd 
1 abcde 

In [4]: df['len'] = df['string'].str.len() 

In [5]: df 
Out[5]: 
    string len 
0 abcd 4 
1 abcde 5 
Các vấn đề liên quan