python - 使用 read_csv 转换 StringIO 时使用 Pandas 的奇怪输出

标签 python pandas csv stringio

当 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/

相关文章:

python - multiprocessing.Pool 中的 up.close 和 p.join

python - 当我释放由 CFFI 生成的 DLL 分配的 char* 时,为什么我的应用程序会崩溃?

python - pandas 删除括号,字符串中的内部内容保留一个空格

python - 无效版本规范错误 : Invalid version spec: =2. 7

python - 如何优化包含 for 循环和数据框中 2000 万行的函数

sql - 查找在逗号分隔值内包含相同值的行

linux - 如何将 .CSV 文件的标题与动态字段名称相匹配

python - 如何将数据从np矩阵加载到seaborn?

python - 使用 XlsxWriter 在 pandas 中导出到 'xlsx' 时应用样式

android - 如何在CSV文件中转义逗号,android