0

次のように、Pandas/Python を使用してクエリ ログをテーブルとしてデータ フレームにインポートしています。

import pandas as pd
q_data_1 = pd.read_table('table_data.txt', skiprows=6, thousands=',')

次の表を取得します。

  • 列 0 - インデックス
  • 列 1 - クエリ文字列 (例: 「NY のニュース」)
  • 列 2 - ページビュー (例: '10,102')
  • 列 3 - 平均継続時間 (例: '00:03:06')
  • 列 4 - 新規訪問率 (例: '32.4%')

現時点では、すべての列の dtype は「オブジェクト」です。col 2 の dtype を整数に、col 3 を時間に、col 4 をパーセンテージに変換するにはどうすればよいですか?

文字列として値を含む一部の列はノイズが多い場合があります (つまり、実際のテキスト文字列が含まれています - これらの発生は少ないですが、上記のカバーが失敗するたびに、適切な dtype として 0 を置き換えたいと思います)。

前もって感謝します。

編集:私は試しました

q_data_1.convert_objects(convert_numeric=True).dtypes

および (column[1] はページビュー)

q_data_1[q_data_1.columns[1]] = q_data_1[q_data_1.columns[1]].convert_objects(convert_numeric=True)

エラーが発生しました:

TypeError: convert_objects() got an unexpected keyword argument 'convert_numeric'
4

1 に答える 1

2

convert_objects およびastypeメソッドを使用することをお勧めします。

したがって、データフレームが呼び出されdf、最初に列 2 のすべてのデータが数値であることを確認したい場合は、次のように呼び出します。

df[df.columns[2]] = df[df.columns[2]].convert_objects(convert_numeric=True)

これは列全体を適切な数値に変換しようとしますが、まだ整数型しかない可能性があります。これを次のようにフォローアップできます。

df[df.columns[2]] = df[df.columns[2]].astype('int')

floatpython と numpy の型に限定されていると思うので、 4 列目で解決する必要があるかもしれません。

于 2013-05-24T18:27:16.183 に答える