3

pandas read_csv のデータ型を指定したい。ここでは、型が指定されたときに機能するものと機能しないものを簡単に見ていきます。後者が機能しないのはなぜですか?

import io
import pandas as pd

csv = """foo,1234567,a,1 
foo,2345678,b,3 
bar,3456789,b,5 
"""

df = pd.read_csv(io.StringIO(csv),
        names=["fb", "num", "loc", "x"])

print(df)

df = pd.read_csv(io.StringIO(csv),
        names=["fb", "num", "loc", "x"], 
        dtype=["|S3", "np.int64", "|S1", "np.int8"])

print(df)

BrenBarn の提案に基づいて、これをよりシンプルにし、できればより明確にするために更新しました。私の実際のデータセットははるかに大きいですが、メソッドを使用して、インポート時にすべてのデータの型を生成したいと考えています。

4

1 に答える 1

5

ジェフが指摘したように、私の構文は悪かった。名前とタイプは、リレーションシップの dic スタイルのリストに圧縮する必要があります。以下のコードは機能しますが、文字列幅を dtype できないことに注意してください。オブジェクトとしてのみ定義できます。

import pandas as pd
import io

csv = """foo,1234567,a,1
foo,2345678,b,3
bar,3456789,b,5
"""

df = pd.read_csv(io.StringIO(csv),
        names = ["fb", "num", "ab", "x"], 
        dtype = {"fb" : object, "num" : np.int64, "ab" : object, "x" : np.int8})
print(df)
于 2013-09-30T00:31:32.163 に答える