当使用熊猫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