2017-07-13 3 views
0

私は多くの列を持つcsvマージを持っています。私は価格の列をフォーマットするのに問題があります。私はそれらを$ 1,000.00という形式に従わせる必要があります。私はわずか2列(販売価格と支払い金額)でこれを達成するために使用できる機能はありますか?ここに私のコードは、これまでのところです:パンダを使用してto_csv中にドル記号で2つの列をフォーマットする

df3 = pd.merge(df1, df2, how='left', on=['Org ID', 'Org Name']) 
    cols = ['Org Name', 'Org Type', 'Chapter', 'Join Date', 'Effective Date', 'Expire Date', 
'Transaction Date', 'Product Name', 'Sales Price', 
      'Invoice Code', 'Payment Amount', 'Add Date'] 
    df3 = df3[cols] 
    df3 = df3.fillna("-") 
    out_csv = root_out + "report-merged.csv" 
    df3.to_csv(out_csv, index=False) 

私は仕事に行くが、私はエラーを取得したと思ったソリューション(ValueErrorを:型「str」は対象のため不明な書式コード「F」)

df3['Sales Price'] = df3['Sales Price'].map('${:,.2f}'.format) 

答えて

3

エラー("Unknown format code 'f' for object of type 'str'")に基づいて、書式設定しようとしている列が文字列として扱われています。したがって、以下のコードで.astype(float)を使用すると、これに対処します。

to_csvコールで(内)にこのフォーマットを設定する方法はありません。ただし、中間行では次のように指定することができます。

cols = ['Sales Price', 'Payment Amount'] 
df3.loc[:, cols] = df3[cols].astype(float).applymap('${:,.2f}'.format) 

to_csvを呼び出します。

関連する問題