使用 read_csv 转换 StringIO 时使用 Pandas 的奇怪输出

Strange output using Pandas when converting StringIO with read_csv

当 pandas CSV reader 函数 'read_csv" is used to convert StringIO values strange characters ('.1') 在分隔某些字段时附加在第二个字段的末尾。期望的结果是第一次测试,但所有字段在分隔符(',')之后没有空格。拆分“1.5M,1.5M”应该总是 return“1.5M”,但是当没有空格时,它 return 是第二个带有“1.5M.1”的字段(在场的尽头)。有办法解决这个问题吗?

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

请注意第一个示例中的 space,您的数据框有零行并且您的列名在第二列中包含 space。

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

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

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

 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)

或者,在这种情况下没有区别:

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

输出:

      0     1
0  1.5M  1.5M