2015-04-25 26 views
5

Başka bir sütunda dize değerlerinin karakter sayısı sütununu almaya çalışırken sorun yaşıyorum ve bu işlemin nasıl verimli bir şekilde yapılacağını anlamadı.Başka bir sütunun değerlerine sahip bir DataFrame sütunu ekleme

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

Bu görünüşte ilk nulls bir sütun oluştururken içerir ve sonra yeniden yazma ve set benim verilere gerçekten çok uzun zaman alır. Peki,

Bir şey almanın en etkili yolu nedir diye biraz kontrol ettim, ama bunu çözemedim.

cevap

9

Pandalar bunun için vectorised string method'a sahiptir: str.len(). Yeni sütunu oluşturmak için yazabilirsiniz: Örneğin

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

:

>>> df 
    string 
0 abcd 
1 abcde 

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

Bu bir Python for döngü ile DataFrame üzerinde döngü çok daha hızlı olması gerekir. Python'dan diğer birçok bilinen dize metodu Panda'lara tanıtılmıştır. Örneğin, lower (küçük harflere dönüştürmek için), belirli bir alt dizenin yinelenen sayımları için count ve bir alt dizgiyi diğeriyle değiştirmek için replace.

1

İşte bunu yapmanın bir yolu.

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 
İlgili konular