2017-06-29 6 views
0

これはおそらく非常に単純な質問ですが、私は助けていただければ幸いです!Pythonで文字列を整数に変換する関数を定義してください

大きなスクリプトの一部として、私は 'file_name'と 'value'という2つの列を持つデータフレーム(csvファイルからインポートされたもの)を持っています。私は列「値」内の値を読み込み、「真」のための「偽」と1のために0を返す関数を定義したいと思います

  file_name value 
0 201623800811s.fits True 
1 201623802491s.fits True 
2 201623802451s.fits False 

:私は、以下の簡単な例を持っています。結果をデータフレームの3番目の列に追加し、最後に更新されたデータフレームをCSVにエクスポートしたいと思います。

私は働くように見える機能を定義しました。ただし、スクリプトを実行すると実行されず、メッセージが表示されます。

<function convert_string at 0x000000000DE35588> 

コンソールで。 私の機能は以下の通りです。どんな助けや助言も歓迎されます。データフレームを処理するときに、明示的forループを使用している場合、あなたはおそらく「それは間違っている」されている

def convert_string(explosions): 
    for i in range(0,len(explosions)): 
     if i == 'True' : 
      return 1 
     elif i == 'False' : 
      return 0 
     else: 
      return 2 

print convert_string 
+0

あなたは決してあなたの機能を呼び出すことはありません。 –

答えて

1

。また、最初の反復でreturnの場合、forループを持つ点は何ですか?あなたは関数を定義することを主張した場合

import numpy as np 

df['third_column'] = np.where(df['value'], 1, 0) 

は、これらを検討

def foo(x): 
    return int(x) 

df['third_column'] = df['value'].apply(foo) 

または単に

df['third_column'] = df['value'].apply(lambda x: int(x)) 

全例:

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'value': [True, False]}) 
print(df) 

#  value 
# 0 True 
# 1 False 

df['third_column'] = np.where(df['value'], 1, 0) 
print(df) 

#  value third_column 
# 0 True    1 
# 1 False    0 
+0

ありがとう、これは私のコードよりはるかにエレガントに書かれた有用な選択肢です。データフレームでforループを明示的に使用することが「間違っている」と言うと、それはあなたのデータフレームが既に使用したいデータを定義しているからですか? –

0

あなたはこの関数を呼び出していません。あなたのprintステートメントはprint convert_string(<value>)でなければなりません。<value>は整数です。

関連する問題