2017-09-17 5 views
0

私はExcelのスプレッドシート(​​SAPから抽出したものです)にデータが入っています(テキスト、数字)。私はこのデータをDataFrameに変換し、いくつかの計算を行い、最終的にsqliteデータベースに保存します。 excelスプレッドシートには小数点の区切り記号としてコンマが付きます。 sqliteデータベースには、小数点記号としてドットが含まれています。コードから小数点記号(Python、Sqlite、Pandas)を変更します

エキス:

df_mce3 = pd.read_excel('rawdata/filename.xlsx', header=0, converters={'supplier': str, 'month': str}, decimal=',') 

(進=「」あなたはcsvファイルで作業しているときのみ動作提案ソリューションでした)

私は次のコードを使用して計算を行った後は、 SQLiteのデータベースに結果を保存します。

conn = sqlite.connect("database.db") 
df_mce3.to_sql("rawdata", conn, if_exists="replace") 
df_ka_ext.to_sql("costanalysis_external", conn, if_exists="replace") 
[...] 

入力:

month ordqty ordprice ordervolume invoiceqty invoiceprice  
08.2017 10,000 14,90  149,00  10,000  14,90 

出力:

month ordqty ordprice ordervolume invoiceqty invoiceprice  
08.2017 10.000 14.90  149.00  10.000  14.90 

私は入力データと同じ小数点区切り文字を持っていると私はこれを行う方法を見つけることができないこれらの数字が必要です。

したがって、私はあなたの誰かがそれを達成するためのアイデアを持っているかどうか尋ねていますか?

私は、Mac OS X上でパンダとのPython 3.5(0.19.1)とnumpyの(1.11.2)を使用しています

ありがとうございます!

+0

ごめんなさい。私はあなたがそれらを変換したかったと思った。私の間違い、申し訳ありません! –

+0

あなたがしようとした場合:f_mce3 [cols [1:]] = df_mc3 [cols [1:]]。replace( '。'、 '、')? –

+0

ちょうど運が良ければそれを試しました。数値を含む列のデータ型は.replace()がない "float64"です。少なくとも、float(number = 1234.45 | number.replace( '。'、 '、')のエラーが発生する)を含む単一の変数に対してメソッドを使用しようとすると、私が言っていることです。 – Christian

答えて

0

保存する前にfloatの値を変換する必要があります。 .を含む値で列をループし、各値を文字列に変換してからreplaceメソッドを使用できます。

ここで私は私が最終的に、少なくともサンプルデータで動作する解決策を考え出したコメントの後x

df['x'] = [str(val).replace('.', ',') for val in df['x']] 
df.to_sql('rawdata', conn, if_exists='replace') 
+0

それは動作します!ありがとう! – Christian

0

列のすべての値を変換します。私はそれが私の実際のデータで動作するかどうかを確認する必要があります。

#!/usr/bin/env python3.5 
import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')) 

def formatnumbers(x): 
    x = round(x, 4) 
    x = str(x).replace('.', ',') 
    return x 

for col in df.columns: 
    df[col] = df[col].apply(formatnumbers) 

print(df.head(n=5)) 

結果は次のとおりです。

  A  B  C  D 
0 -0,4065 -1,6113 0,2257 0,7424 
1 0,8349 0,0316 -1,105 -1,6463 
2 -0,2108 0,7356 -1,0823 0,5261 
3 0,3382 0,6158 0,6117 -0,3896 
4 -0,403 -1,3639 0,8691 0,5791 
関連する問題