Python 3.x “如何更改数据类型”;“对象”;导入CSV后是否在数据框中?

Python 3.x “如何更改数据类型”;“对象”;导入CSV后是否在数据框中?,python-3.x,pandas,Python 3.x,Pandas,我已经导入了一个CSV文件作为数据帧。当我运行df.dtypes时,我得到的大多数列都是“object”,这对于图表中的Bokeh是无用的 我需要将一列更改为int,另一列更改为date,其余更改为strings 我只在导入数据类型后才能看到它。您建议在导入期间(如何?)或导入之后更改它吗 我认为datetime需要解析中的日期参数 如果您有int列,但没有得到int64dtype,我想可能有一些字符串可能是空字符串,因为读取csv自动转换dtypes 然后需要通过-将坏数据转换为NaN,但获取

我已经导入了一个CSV文件作为数据帧。当我运行
df.dtypes
时,我得到的大多数列都是“object”,这对于图表中的Bokeh是无用的

  • 我需要将一列更改为
    int
    ,另一列更改为
    date
    ,其余更改为strings
  • 我只在导入数据类型后才能看到它。您建议在导入期间(如何?)或导入之后更改它吗

  • 我认为datetime需要
    解析中的日期
    参数

    如果您有
    int
    列,但没有得到
    int64
    dtype
    ,我想可能有一些
    字符串
    可能是
    空字符串
    ,因为
    读取csv
    自动转换
    dtypes

    然后需要通过-将坏数据转换为
    NaN
    ,但获取
    float
    列,因为
    NaN
    具有
    float
    类型。因此需要将
    NaN
    替换为某些int(例如
    0
    ),然后转换为
    int

    df['col_int'] = pd.to_numeric(df['col_int'], errors='coerce').fillna(0).astype(int)
    
    样本:

    import pandas as pd
    from pandas.compat import StringIO
    
    temp=u"""a;b;c;d
    A;2015-01-01;3;e
    S;2015-01-03;4;r
    D;2015-01-05;5r;t"""
    #after testing replace 'StringIO(temp)' to 'filename.csv'
    df = pd.read_csv(StringIO(temp), sep=";", parse_dates=[1])
    print (df)
       a          b   c  d
    0  A 2015-01-01   3  e
    1  S 2015-01-03   4  r
    2  D 2015-01-05  5r  t
    
    print (df.dtypes)
    a            object
    b    datetime64[ns]
    c            object
    d            object
    dtype: object
    
    df['c'] = pd.to_numeric(df['c'], errors='coerce').fillna(0).astype(int)
    print (df)
       a          b  c  d
    0  A 2015-01-01  3  e
    1  S 2015-01-03  4  r
    2  D 2015-01-05  0  t
    
    print (df.dtypes)
    a            object
    b    datetime64[ns]
    c             int32
    d            object
    dtype: object
    

    对于更改
    dtypes
    需要
    dtype
    参数:

    temp=u"""a;b;c;d
    A;10;3;e
    S;2;4;r
    D;6;1;t"""
    #after testing replace 'StringIO(temp)' to 'filename.csv'
    df = pd.read_csv(StringIO(temp), sep=";", dtype={'b':str, 'c':float})
    print (df)
       a   b    c  d
    0  A  10  3.0  e
    1  S   2  4.0  r
    2  D   6  1.0  t
    
    print (df.dtypes)
    a     object
    b     object
    c    float64
    d     object
    dtype: object
    

    在读取csv文件期间:

    在pandas中的read_csv中使用数据类型或转换器属性

    将熊猫作为pd导入
    将numpy作为np导入
    df=pd.read\u csv('data.csv',dtypes={'a':float64,'b':int32},headers=None)

    在这里,类型将被自动读取为您指定的数据类型

    读取csv文件后:

    使用astype函数更改列类型

    检查此代码。 假设你有两列

    df[['a',b']]=df[[a',b']].astype(float)

    这样做的好处是可以一次更改多个列的类型