0

データ型を変換しようとするデータフレームがあります。 df = df.convert_objects(convert_numeric=True)素晴らしい仕事が、今は廃止されました:私は解決策を使用していた17.0アップデートする前にアドバイスが必要:パンダのデータフレームのオブジェクトを変換する

In [5]: 
df = pd.io.json.json_normalize(data) 
df.head() 
Out[5]: 
      a  b  c  d   e   f  g  
2014-09-10 5.38 5.45 5.35 1769 10000002 34 6651569991 
2014-09-11 5.44 5.48 5.38 1863 10000002 34 8147338425 
2014-09-12 5.35 5.45 5.32 1792 10000002 34 10549259297 
2014-09-13 5.41 5.48 5.3099 2136 10000002 34 9408246021 
2014-09-14 5.43 5.47 5.39 2174 10000002 34 9385610951 

In [6]: 
df.dtypes 
Out[6]: 
a object 
b object 
c object 
d object 
e object 
f object 
g object 
dtype: object 

。今私は使用しようとしています:pd.to_numeric(df, errors='ignore')しかし、エラーarg must be a list, tuple, 1-d array, or Seriesを取得します。

私はパンダシリーズを使用して、次の解決策を考え出すと、変換に適した1次元配列持つように各列を反復するために、管理遊ん後:

for col in df: df[col] = pd.to_numeric(pd.Series(df[col]), errors='ignore')

をこれが行うための最善の方法です変換するか、より洗練されたソリューションがありますか?私はまだパンダの周りに頭を浮かべているので、私は明確な答えを見つけることができなかったので、おそらくそれは誰かのために役立つだろうと尋ねています。

+0

df = df.apply(lambda x:pd.to_numeric(x)、axis = 0) - >はあなたが探しているものを得るでしょう。 – Abbas

答えて

1

apply機能を使用してください。

In [34]: df = df.apply(lambda x: pd.to_numeric(x), axis=0) 

In [36]: df.dtypes 
Out[36]: 
a float64 
b float64 
c float64 
d  int64 
e  int64 
f  int64 
g  int64 
dtype: object 
+0

魅力的な作品です。ありがとうございます。 – Trm

+1

'df.apply(pd.to_numeric)'もここで動作するはずです。 – EdChum