私はしばらくの間これに固執しており、グーグルの量は役に立たないようです。パンダのデータフレームの多くの列を変更する
私は多くの生データを読み込んでいます。いくつかの変数は、ソースが原因で様々な理由で文字を使用するため、オブジェクトとして表示されます(私は気にしません)。
だから私はちょうど(再び、私は彼らが数値だけのことを、そのあまり気にしないintやfloatとしてキャストするためにこれらを強制的にpandas.to_numeric(___ ,error='coerce')
を通じて列のかなり大規模なサブセットを実行したい。
私はこれは簡単に列毎に発生することができます:
df['col_name'] = pd.to_numeric(df['col_name'], errors='coerce')
をしかし、私は..私はこのようにキャストしたいいくつかの60個の列を持っているので、私はこれが働くだろうと思った:
numeric = ['lots', 'a', 'columns']
for item in numeric:
df_[item] = pd.to_numeric(df[item], errors='coerce')
私が得るエラーは:
Traceback (most recent call last):
File "/Users/____/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2885, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-53-43b873fbd712>", line 2, in <module>
df_detail[item] = pd.to_numeric(dfl[item], errors='coerce')
File "/Users/____/anaconda/lib/python2.7/site-packages/pandas/tools/util.py", line 101, in to_numeric
raise TypeError('arg must be a list, tuple, 1-d array, or Series')
TypeError: arg must be a list, tuple, 1-d array, or Series
私は多くのバージョンを試しました。これは、リストと関係があるか、それを見ているものです。 forループが単に呼び出すときに同じエラーが発生するdf(item).describe()
私の(まだ初心者の)Pythonの理解から、これはうまくいくはずです。私は迷っている。 おかげ
すべての
は([ 'applymap']を見てくださいHTTP考えてみましょう://pandas.py data.org/pandas-docs/stable/generated/pandas.DataFrame.applymap.html)、意味のある戻り値を返すようにしてください(つまり、変換できなかった場合は元の値を戻してください)。 – Jan