当 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: []
>>>
最佳答案
请注意,在第一个带有空格的示例中,您的数据框有零行,并且您的列名称在第二列中包含空格。
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
关于python - 使用 read_csv 转换 StringIO 时使用 Pandas 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625514/