2017-10-07 5 views
1

パンダのCSVリーダー関数 'read_csv'を使用してStringIO値を変換すると、特定のフィールドを区切るときに2番目のフィールドの末尾に奇妙な文字( '.1'必要な結果は最初のテストですが、すべてのフィールドに区切り文字( '、')の後ろに空白がありません。「1.5M、1.5M」を分割すると常に「1.5M」が返されますが、 「1.5M.1」(フィールドの末尾に」0.1' を追加する)と2番目のフィールド。この問題を解決する方法はありますか?StringIOをread_csvで変換するときにPandasを使用すると奇妙な出力が発生する

>>>import pandas as pd 
>>>from io import StringIO 
>>>pd.read_csv(StringIO("1.5M, 1.5M")) 
Empty DataFrame 
Columns: [1.5M, 1.5M] 
Index: [] 
>>> pd.read_csv(StringIO("1.5M,1.5M")) 
Empty DataFrame 
Columns: [1.5M, 1.5M.1] 
Index: [] 
>>> 

答えて

2

お知らせスペース、あなたのデータフレームとの最初の例では、行がゼロで、列名に2番目の列のスペースが含まれています。

df = pd.read_csv(StringIO("1.5M, 1.5M")) 
df.columns 

Index(['1.5M', ' 1.5M'], dtype='object') 

2番目のケースでも、行はゼロですが、スペースなしで列名が重複しています。

df = pd.read_csv(StringIO("1.5M,1.5M")) 
df.columns 

Index(['1.5M', '1.5M.1'], dtype='object') 

したがって、重複した列名に「.1」が追加されます。

ただし、これを「1.5M」をデータフレームのデータとして、列見出しとしてはしたくない場合。

使用

df = pd.read_csv(StringIO("1.5M, 1.5M"), header=None) 

OR、それはこの場合には違いはありません。

df = pd.read_csv(StringIO("1.5M,1.5M"), header=None) 

出力:

 0  1 
0 1.5M 1.5M 
+0

は故障のためにあなたのスコットありがとうございます。 – NobleVision

+0

@NobleVision、よろしくお願いします。良いものを持っている。 –

関連する問題