2017-11-15 12 views
0

このコードを実行しようとしていますが、毎回同じエラーが表示されます。パンダの長さの不一致

def concatenate(indir="E:\\HOME\\NBAStats\\PlayByPlay",outfile="E:\\HOME\\NBAStats\\PlayByPlay\\Concatenated.csv",sep='\t'): 
     os.chdir(indir) 
     filelist=glob.glob("*.csv") 
     dflist=[] 
     colnames=['game_id', 'data_set', 'date', 'a1', 'a2', 'a3', 'a4', 'a5', 'h1', 'h2', 'h3', 'h4', 'h5', 'period', 'away_score', 'home_score', 'remaining_time', 'elapsed', 'play_length', 'play_id', 'team', 'event_type', 'assist', 'away', 'home', 'block', 'entered', 'left', 'num', 'opponent', 'outof', 'player', 'points', 'possession', 'reason', 'result', 'steal', 'type', 'shot_distance', 'original_x', 'original_y', 'converted_x', 'converted_y', 'description'] 
     for filename in filelist: 
      print(filename) 
      df=pandas.read_table(filename, header=None) 
      dflist.append(df) 
     concatdf=pandas.concat(dflist,axis=0) 
     print(type(concatdf)) 
     concatdf.columns=colnames 
     concatdf.head() 
     concatdf.to_csv(outfile,index=False) 

エラーは次のとおりです。

ValueError: Length mismatch: Expected axis has 1 elements, new values have 44 elements

+0

のread_csvを使用してoccuringヴァーレエラーは、あなたが期待される形式でテーブルをインポートしましたでしょうか? (44列?) –

+0

私は、 'read_table'にデフォルトである、いくつかのファイルにタブセパレータがないと思います。 – jezrael

+0

それだけを設定する必要があります。もしカンマ 'df = pandas.read_table(ファイル名、ヘッダー=なし、sep = '、') ' – jezrael

答えて

0

これは、代わりに

read_table
>  File "<ipython-input-8-24ad9c1ee739>", line 1, in <module> 
>  runfile('C:/Users/Fede/ToConcatenateNBA.py', wdir='C:/Users/Fede') 
> 
> File 
> "C:\Users\Fede\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", 
> line 880, in runfile 
>  execfile(filename, namespace) 
> 
> File 
> "C:\Users\Fede\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", 
> line 102, in execfile 
>  exec(compile(f.read(), filename, 'exec'), namespace) 
> 
> File "C:/Users/Fede/ToConcatenateNBA.py", line 29, in <module> 
>  concatenate() 
> 
> File "C:/Users/Fede/ToConcatenateNBA.py", line 25, in concatenate 
>  concatdf.columns=colnames 
> 
> File 
> "C:\Users\Fede\Anaconda3\lib\site-packages\pandas\core\generic.py", 
> line 2983, in __setattr__ 
>  return object.__setattr__(self, name, value) 
> 
> File "pandas\_libs\src\properties.pyx", line 65, in 
> pandas._libs.lib.AxisProperty.__set__ (pandas\_libs\lib.c:45103) 
> 
> File 
> "C:\Users\Fede\Anaconda3\lib\site-packages\pandas\core\generic.py", 
> line 471, in _set_axis 
>  self._data.set_axis(axis, labels) 
> 
> File 
> "C:\Users\Fede\Anaconda3\lib\site-packages\pandas\core\internals.py", 
> line 2836, in set_axis 
>  (old_len, new_len)) 
> 
> ValueError: Length mismatch: Expected axis has 46 elements, new values 
> have 44 elements 
+0

新しい列に追加する問題を解決しました。しかし、私はそれを修正するための最良の方法だとは思わない。私は2つの空の列をファイルに追加し、それらを削除しなければならなかった – fede