当pandas 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: []
>>>
答案 0 :(得分:3)
请注意,在第一个带空格的示例中,您的数据框的行数为零,而您的列名称包含第二列中的空格。
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')
因此,熊猫增加了' .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