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