2015-04-25 51 views
5

我在嘗試在另一列中獲取字符串值的字符數列時出現問題,但尚未弄清楚如何有效地執行此操作。使用另一列的值的len()添加DataFrame列

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

這顯然涉及首先創建空的一列,然後重寫它,它發生在我的數據集,很長一段時間。那麼得到類似的最有效方法是什麼

'string'  'char_length' 
abcd   4 
abcde   5 

我已經檢查了很多,但我一直無法弄清楚。

回答

9

熊貓有一個vectorised string method這個:str.len()。要創建新列,你可以寫:

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 

這應該是比上循環與一個Python for循環數據幀相當快。

Pandas已經引入了許多其他Python熟悉的字符串方法。例如,lower(用於轉換爲小寫字母),count用於計算特定子字符串的出現次數,replace用於將一個子字符串與另一個子字符串進行交換。

1

以下是一種方法。

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 
相關問題