2017-04-20 20 views
1

複数の列を文字列に再フォーマットしようとしています(NaNが含まれているため、整数として読み込むことはできません)。すべての列は現在float64です。小数点を持たないようにしたいと思います。ここでpandas:列はキーと同じ長さでなければなりません

はデータです:私は文字列にこれらの列を変換しようとすると

{'crash_id': {0: 201226857.0, 
    1: 201226857.0, 
    2: 2012272611.0, 
    3: 2012272611.0, 
    4: 2012298998.0}, 
'driver_action1': {0: 1.0, 1: 1.0, 2: 29.0, 3: 1.0, 4: 3.0}, 
'driver_action2': {0: 99.0, 1: 99.0, 2: 1.0, 3: 99.0, 4: 99.0}, 
'driver_action3': {0: 99.0, 1: 99.0, 2: 99.0, 3: 99.0, 4: 99.0}, 
'driver_action4': {0: 99.0, 1: 99.0, 2: 99.0, 3: 99.0, 4: 99.0}, 
'harmful_event1': {0: 14.0, 1: 14.0, 2: 14.0, 3: 14.0, 4: 14.0}, 
'harmful_event2': {0: 99.0, 1: 99.0, 2: 99.0, 3: 99.0, 4: 99.0}, 
'harmful_event3': {0: 99.0, 1: 99.0, 2: 99.0, 3: 99.0, 4: 99.0}, 
'harmful_event4': {0: 99.0, 1: 99.0, 2: 99.0, 3: 99.0, 4: 99.0}, 
'most_damaged_area': {0: 14.0, 1: 2.0, 2: 14.0, 3: 14.0, 4: 3.0}, 
'most_harmful_event': {0: 14.0, 1: 14.0, 2: 14.0, 3: 14.0, 4: 14.0}, 
'point_of_impact': {0: 15.0, 1: 1.0, 2: 14.0, 3: 14.0, 4: 1.0}, 
'vehicle_id': {0: 20121.0, 1: 20122.0, 2: 20123.0, 3: 20124.0, 4: 20125.0}, 
'vehicle_maneuver': {0: 3.0, 1: 1.0, 2: 4.0, 3: 1.0, 4: 1.0}} 

、これは何が起こるかです:

>> df[['crash_id','vehicle_id','point_of_impact','most_damaged_area','most_harmful_event','vehicle_maneuver','harmful_event1','harmful_event2','harmful_event3','harmful_event4','driver_action1','driver_action2','driver_action3','driver_action4']] = df[['crash_id','vehicle_id','point_of_impact','most_damaged_area','most_harmful_event','vehicle_maneuver','harmful_event1','harmful_event2','harmful_event3','harmful_event4','driver_action1','driver_action2','driver_action3','driver_action4']].applymap(lambda x: '{:.0f}'.format(x)) 

File "C:\Users\<name>\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2376, in _setitem_array 
     raise ValueError('Columns must be same length as key') 

ValueError: Columns must be same length as key 

私は前にこのエラーを見ていないし、このように感じるんしました私は間違って何をしているのですか?

+1

いくつかのいずれかを簡単に固定 – muon

+1

を再現しようとすることができるようにあなたが 'data.to_dictを()'使用してサンプルを提供することができます!ありがとう、私はそれが可能だったか分からなかった! – ale19

答えて

1

あなたのコードは、あなたが提供した辞書で私のために実行されます。 NaNケースを個別に処理する関数を作成してみてください。私は彼らがあなたの問題を引き起こしていると思います。以下のような基本的な

何か:

def formatter(x): 
    if x == None: 
     return None 
    else: 
     return '{:.0f}'.format(x) 
関連する問題