2017-11-28 10 views
1

私はplotlyを使用していて、その文書ではこの文を見ました。何の疑いもせずにpythonデータフレーム新しい列を作成する

Plotly creating map

df['text'] = df['state'] + '<br>' +\ 
    'Beef '+df['beef']+' Dairy '+df['dairy']+'<br>'+\ 
    'Fruits '+df['total fruits']+' Veggies ' + df['total veggies']+'<br>'+\ 
    'Wheat '+df['wheat']+' Corn '+df['corn'] 
は、私は、このコードに

df_region["text"] = df_region["addr_state"] + '<br>' + 
        "Total loan amount ($ USD): " + df_region["loan_amnt"] + "<br>" + 
        "Avg loan amount ($ USD): " + df_region["avg_loan_amnt_by_state"] + '<br>' + 
        "Avg employment length (Years): " + df_region["avg_emp_length_by_state"] 

を私のデータセットを実装しようとしたしかし、私は、私はすべてを持っていた

TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U33') dtype('<U33') dtype('<U33') 

これらのエラーメッセージが表示されましたカラムは数値(int64またはfloat64)としてaddr_stateを除きます。後で、すべての列タイプをオブジェクトに変更しましたが、まだ運が得られませんでした。誰かが私がここで逃すことをヒントを与えることができますか?私のデータセットの

ヘッド部は、この

 amnt  num  avg_loan emp_length addr_state 
1 36978050 2205 16770  6.00   AK 
2 164627650 11200 14698  6.15   AL 
3 93416075 6640 14068  5.90   AR 
4 290110100 20412 14212  5.37   AZ 
5 1898145250 129517 14655  5.66   CA 

おかげのように見えます!

答えて

2

私は最も単純でstr最初にすべての数値列を変換だと思う:

c = ["loan_amnt", "avg_loan_amnt_by_state", "avg_emp_length_by_state"] 
df_region[c] = df_region[c].astype(str) 

または別々に各列を変換します

df_region["text"] = df_region["addr_state"] + '<br>' + 
        "Total loan amount ($ USD): " + df_region["loan_amnt"].astype(str) + "<br>" + 
        "Avg loan amount ($ USD): " + df_region["avg_loan_amnt_by_state"].astype(str) + '<br>' + 
        "Avg employment length (Years): " + df_region["avg_emp_length_by_state"].astype(str) 
+0

私は最初の試みをしなかったが、2番目のものは完全に機能する。 – jaykodeveloper

+1

スーパー、喜んで助けることができます! – jezrael

1

文字列の構築に加えては悪い習慣と考えられています。 代わりにこれを試してみてください:

template = '''{addr_state}<br> 
Total loan amount ($ USD): {loan_amnt}<br> 
Avg loan amount ($ USD): {avg_loan_amnt_by_state}<br> 
Avg employment length (Years): {avg_emp_length_by_state}''' 

df_region["text"] = template.format(
    addr_state=df_region['addr_state'], 
    loan_amnt=df_region['loan_amnt'], 
    avg_loan_amnt_by_state=df_region['avg_loan_amnt_by_state'], 
    avg_emp_length_by_state=df_region['avg_emp_length_by_state'] 
) 

それとも、のpython 3.6を使用している場合は、フォーマット呼び出しを省略し、直接テンプレート内の変数含めることができます形式の呼び出しについての最もよい事がある

template = f'''{df_region['addr_state']}<br> 
Total loan amount ($ USD): {df_region['loan_amnt']}<br> 
Avg loan amount ($ USD): {df_region['avg_loan_amnt_by_state']}<br> 
Avg employment length (Years): {df_region['avg_emp_length_by_state']}''' 

をあなたのデータを文字列として表現することができない限り、変換について気にする必要はありません。__str__また、小数点やさまざまな書式設定ツールを制御できます。例:reference

関連する問題