当使用熊猫CSV阅读器函数'read_csv'转换StringIO值时,在分隔某些字段时,在第二个字段的末尾添加了奇怪的字符('.1')。期望的结果是第一个测试,但是所有字段分隔符(',')后不能有空格。拆分“ 1.5M,1.5M”时应始终返回“ 1.5M”,但是当没有空格时,它将返回带有“ 1.5M.1”的第二个字段(添加' .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: []
>>>

最佳答案

请注意,在第一个示例中,带有空格的数据框的行数为零,列名在第二列中包含空格。

 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)


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

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


输出:

      0     1
0  1.5M  1.5M

09-25 20:26