2016-07-11 6 views
1

を設定しようとしたインデックスによって私はリネームパンダ欄にしようとして実行していたコードです最良の方法ですが、Python 3.5でこれを実行すると、次のようになります。「バスエラー:10」:私はこれではありませんかなり確信している</p> <pre><code>import pandas as pd df = pd.read_csv('input.csv', dtype='unicode', delim_whitespace=True) df.columns.values[2] = "id" print(df) </code></pre> <p>パンダの列名ここ

$ python3.5 test.py 
Bus error: 10 

このようなエラーが発生するのは初めてのことです。トレースバックはなく、この出力文字列だけです。

Bus error: 10は何を意味しますか?ここ


input.csvコンテンツである:(pandas 0.17.1を使用)

visitIp  userId idSite 
128.227.50.161 a  35 
24.222.206.154 a  35 
10.12.0.1  a  35 
10.12.0.1  a  35 
10.12.0.1  a  35 
24.222.206.154 a  35 

+0

csvを共有できますか? (あなたは小さなCSVで複製できますか?) –

+0

私にとっては、エラーを表示せずにクラッシュします。私は0.18.0と0.18.1(Python 3.5 Win10 64bit)で試しました。 – ayhan

+0

@AndyHayden csvは質問の底にあります。ありがとう。 – alecxe

答えて

2

Bus errorプロセッサが無効なメモリアドレスにアクセスすることができないときに発生します。

df.columnsは、パンダの不変オブジェクトであるIndexの場合のインスタンスです。それを変更する操作は、実際には新しいオブジェクトを返します。要素の変更は不正です。たとえば、df.columns[2] = 'id'は例外を発生させます。

索引の基礎となるデータにアクセスして変更していました。実際には、データは直接ではなく、一時的なオブジェクトであったかもしれないデータのnumpyのviewです。 (内部でIndex.valuesself._data.view(ndarray)を返すプロパティです)

この現象は再現できませんでした。何が起こったのか正確にはわかりません。 numpyのC/cythonコードでは、未定義の動作になる可能性があります。

+0

私はパンダ0.17.1で問題を再現し、0.18でできませんでした。これは、トピックを解決するのに十分です。説明ありがとう! – alecxe

+0

@alecxeパンダ0.17.1と0.18.1を試しましたが、両方ともnumpy 1.11.0で試しましたが、エラーは発生しませんでした。 – ptrj

+0

お試しいただきありがとうございます。私は確実にPython3.5、numpy 1.11.1、pandas 0.17.1、Mac OS Xで確実に再現できます。 – alecxe

関連する問題

 関連する問題