2017-06-07 8 views
0

私はフォーマットのないcsvファイルを持っています。私はcsvファイルをフォーマットする必要があります。csvファイルをフォーマットする

import pandas 
df = pandas.read_csv('abc.csv') 
df['speed'] = df['speed'].map('{:06,.2f}'.format) 
df.to_csv("FINAL.csv") 

エラー:例については

Traceback (most recent call last): 
File "<stdin>", line 3, in <module> 
File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\core\series.py", line 2009, in map 
mapped = map_f(values, arg) 
File "pandas\src\inference.pyx", line 1064, in pandas.lib.map_infer (pandas\lib.c:58525) 
ValueError: Unknown format code 'f' for object of type 'str' 

df['speed'] = [54,156,3] 

予想される出力:

speed 
054.00 
156.00 
003.00 

答えて

2

あなたの文字列フォーマットでカンマを削除し、それが動作するはずです。

import pandas as pd 
df = pd.DataFrame([54,156,3]) 
df[0].map('{:06.2f}'.format) 

出力:

054.00 
156.00 
003.00 

はここで書式設定文字列のreasourceです:

https://pyformat.info/

編集:
これは厄介なデータの問題であるように聞こえます。

df = pandas.read_csv('abc.csv', dtype=object) 
df['speed'] = df['speed'].apply(pd.to_numeric, errors='coerce') 
df['speed'] = df['speed'].map('{:06.2f}'.format) 

errors='coerce'が浮かぶように変換しようと、それはそうしなかった場合NaNが返されます:あなたのCSVファイルを読み込むときに、私は、次のオプションを試してお勧めします。

+0

カンマ(、)を削除しても、同じエラーが発生します。 – pnkjmndhl

+0

csvファイルから値をインポートして同じことを試すことはできますか? – pnkjmndhl

+0

編集内容から、別のエラーが発生したようです。 'ValueError:無効な変換指定'が 'ValueError: 'str'型のオブジェクトに対して不明な書式コード' f 'に変更されました。あなたの値がフロートとして読み込まれていることを確認してください。 'pd.to_numeric()'を試してください –

関連する問題