转换StringIO和read_csv时使用熊猫的奇怪输出

问题描述:

使用pandas CSV阅读器函数'read_csv'转换StringIO值时,在定界某些字段时,第二个字段的末尾会附加奇怪字符('.1')。理想的结果是第一次测试,但所有字段在分隔符(',')之后没有空格。分割“1.5M,1.5M”应该总是返回“1.5M”,但是如果没有空格,则返回与“1.5M.1”(在外地的末尾添加” 1.1' )。第二场是否有解决这个问题的方法吗?在与空间的第一个例子转换StringIO和read_csv时使用熊猫的奇怪输出

>>>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: [] 
>>> 

通知,您的数据帧有零行,列名包含第二列的空格。

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

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

在第二种情况下,也是零行,但是您有没有空格的重复列名称。

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

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

因此,Pandas将'.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,不客气。祝你有个好的一天。 –