【问题标题】:Pandas read csv file values as text without transforming to float firstPandas 将 csv 文件值作为文本读取,而不首先转换为浮点数
【发布时间】:2020-02-07 16:49:34
【问题描述】:

我正在将 csv 文件中的数据加载到 pandas 数据框中,csv 文件中的列包含以下值:

1,2,3.4,5,6.2

问题是 int 值被更改为浮点数(我知道这是因为浮点数将是更通用的 dtype),所以它被读作:

df
   value
0    1.0
1    2.0
2    3.4
3    5.0
4    6.2

我需要将 csv 文件中的所有值作为字符串获取。

我尝试使用pd.read_csv('filename.csv',dtype=str)pd.read_csv('filename.csv',dtype=object),结果将它们更改为浮点数然后str:

  value
0  1.0
1  2.0
2  3.4
3  5.0
4  6.2

有没有办法按原样阅读它们?即:

  value
0     1
1     2
2   3.4
3     5
4   6.2

【问题讨论】:

  • AFAIK 使用pd.read_csv('filename.csv',dtype=str) 将导致数据为字符串。这不是理想的行为吗?

标签: python pandas dataframe


【解决方案1】:

使用

例如

import pandas as pd
from io import StringIO

# csv file contain single text row value 
csv1 = StringIO("""1,2,3.4,5,6.2""")
# csv1 replace with csv file name eg. 'filename.csv'
df = (pd.read_csv(csv1,dtype=str,header=None)).T.rename(columns={0:'value'})
print(df)
   value
0     1
1     2
2   3.4
3     5
4   6.2


# csv file contain multiple text row value 
csv2 = StringIO("""1
2
3.4
5
6.2""")
# csv2 replace with csv file name eg. 'filename.csv'
df1 = pd.read_csv(csv2,dtype=str,header=None,names=['value'])
print(df1)
  value
0     1
1     2
2   3.4
3     5
4   6.2

【讨论】:

    【解决方案2】:

    这是我的测试 CSV(untitled.csv):

    a,1

    b,2

    c,3.4

    d,5

    e,6.2

    使用以下代码pd.read_csv('untitled.csv', dtype='str', header=None),我得到:

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多