2016-11-02 27 views
2

データフレームがあり、durationは属性の1つです。期間のコンテンツがあるように:Python:文字列配列をデータフレーム内のint配列に変換します。

  array(['487', '346', ..., '227', '17']). 

とdf.info()、私が取得:データ列(合計22列):

   duration  2999 non-null object 
      campaign  2999 non-null object 
      ... 

は、今私がintに期間を変換したいです。解決策はありますか?

答えて

0

使用int(str)

df['duration'] = df['duration'].apply(lambda x: int(x)) #df is your dataframe with attribute 'duration' 
+3

ラムダは必要ない、 '.apply(intは)'仕事と優れたパフォーマンスを提供します。 – root

3
df['duration'] = df['duration'].astype(int) 
3

使用astype:大量のサンプルデータセットを生成するために以下の設定を使用し

df['duration'] = df['duration'].astype(int) 

タイミング

n = 10**5 
data = list(map(str, np.random.randint(10**4, size=n))) 
df = pd.DataFrame({'duration': data}) 

は、私は、次のタイミングを取得:

%timeit -n 100 df['duration'].astype(int) 
100 loops, best of 3: 10.9 ms per loop 

%timeit -n 100 df['duration'].apply(int) 
100 loops, best of 3: 44.3 ms per loop 

%timeit -n 100 df['duration'].apply(lambda x: int(x)) 
100 loops, best of 3: 60.1 ms per loop 
+0

私はそれを調整して、同じ数のループを使って比較しやすくすることをお勧めします。 –

+1

同じ数のループを持つように編集しました。 – root

関連する問題