vaex を使用しているときに、予期しないエラーが発生しましNameError: name 'column_2_0' is not defined
た。
調査の結果、データ ソース (HDF5 ファイル) で問題の原因となっている列名が実際に呼び出されcolumn_2.0
、vaex によって名前が変更されていることがわかりましたcolumn_2_0
が、列名を使用して操作を実行するとエラーが発生します。このエラーを再現する簡単な例を次に示します。
import pandas as pd
import vaex
cols = ['abc_1', 'abc1', 'abc.1']
vals = list(range(0,len(cols)))
df = pd.DataFrame([vals], columns=cols)
dfv = vaex.from_pandas(df)
for col in dfv.column_names:
dfv = dfv[dfv[col].notna()]
dfv.count()
...
NameError: name 'abc_1_1' is not defined
この場合、vaex はすでに使用されている に名前を変更しようとしているように見えるabc.1
ためabc_1
、代わりに を使用してしまいますabc_1_1
。
のように列の名前を変更できることはわかっていますがdfv.rename('abc_1_1', 'abc_dot_1')
、(a) vaex が思いついた列名が既に使用されているこの例のように、名前の競合のための特別なロジックを導入する必要があり、(b) したくありません。ピリオドを含む列があるたびに手動でこれを行う必要があります。
ソースデータのすべての列名にピリオドを使用しないように強制することもできますが、データが一般的に由来する可能性のあるパンダやその他のソースにはこの制限がないことを考えると、これはストレッチのように思えます。
上記の2つ以外に、この問題に対処するためのアイデアは何ですか?