2017-05-24 2 views
1

数値を含む列の.csvを科学的表記で読み取ろうとしています。 は、どんなに私が何をすべきか、それは文字列としてそれらを読み終わるん:科学的表記がパンダで文字列として読み取られています

def readData(path, cols): 
    types = [str, str, str, str, np.float32] 
    t_dict = {key: value for (key, value) in zip(c, types)} 

    df = pd.read_csv(path, header=0, sep=';', encoding='latin1', usecols=cols, dtype=t_dict, chunksize=5000) 

    return df 

c = [3, 6, 7, 9, 16] 
df2017_chunks = readData('Data/2017.csv', c) 

def preProcess(df, f):  
    df.columns = f 
    df['id_client'] = df['id_client'].apply(lambda x: str(int(float(x)))) 

    return df 

f = ['issue_date', 'channel', 'product', 'issue', 'id_client'] 

df = pd.DataFrame(columns=f) 
for chunk in df2017_chunks: 
    aux = preProcess(chunk, f) 
    df = pd.concat([df, aux]) 

にはどうすれば適切なこのデータを読み取ることができますか?

+2

をお読みしようとしているパンダCSVの外に小さなサンプルを投稿することができますか? – cardamom

答えて

0

プリプロセス機能は、他のものが適用された後に文字列変換を適用します。これは意図された動作ですか?

あなたが試みることができる:

df = pd.read_csv(path, header=0, sep=';', encoding='latin1', usecols=cols, chunksize=5000) 
df["id_client"] = pd.to_numeric(df["id_client"]) 
0

サンプルデータフレーム:

df = pd.DataFrame({'issue_date': [1920,1921,1922,1923,1924,1925,1926], 
    'name': ['jon doe1','jon doe2','jon doe3','jon doe4','jon doe5','jon doe6','jon doe7'], 
    'id_cleint': ['18.61', '17.60', '18.27', '16.18', '16.81', '16.37', '67.07']}) 

をあなたがフォローコマンドを使用してデータフレームの種類を確認することができます

print df.dtypes 

出力:

id_client  object 
issue_date  int64 
name   object 
dtype: object 

次のコマンドを使用して、objectからfloat64df['id_client'] DTYPEを変換する:項目を変換できない場合

df['id_client'] = pd.to_numeric(df['id_client'], errors='coerce') 

errors='coerce'NaNをもたらすであろう。コマンドに次の出力で
print df.dtypes結果の使用:

id_client  float64 
issue_date  int64 
name   object 
dtype: object 
関連する問題