300以上の列を持つcsvファイルをインポートする必要があります。これらの列のうち、最初の列のみをカテゴリとして指定する必要があり、残りの列は32以下でフロートする必要があります。列インデックスを介して列のデータ型を指定できると思います。私の質問は、列インデックスに基づいてデータ型を指定するための最適な方法は何ですか?
Col_A Col_B Col_C Col_D
001 1 2 1.2
002 2 3 3.5
003 3 4.5 7
004 4 6.5 10
私が試したコードは次のとおりです。
df = pd.read_csv(path, low_memory=False,
dtype={'Col_A': 'category', [2:]: np.float32)}
2回読み取り、1回目はすべての列を取得し、2回目は読み取り時にdtypeを指定します。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
df.to_csv('tmp.csv',index=False)
path = 'tmp.csv'
df =pd.read_csv(path)
type_dict = {}
for key in df.columns:
if key == 'A':
type_dict[key]='category'
else:
type_dict[key]=np.float32
df = pd.read_csv(path,dtype=type_dict)
print(df.dtypes)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加