【问题标题】:change dtype pandas by column number for multiple columns按多列的列号更改 dtype pandas
【发布时间】:2019-11-25 10:22:48
【问题描述】:

我想更改将要使用 python pandas 读取的数据帧的 dtype。我知道我可以像这样通过列名更改 dtype:

    df = pd.read_csv("blablab.csv", dtype = {"Age":int}

但是,我想通过列号设置 dtype。例如。第 1,3,5 列到“datetime”,第 6 列的 dtype 到最后一列到 dtype“float”。有没有类似的:

    df = pd.read_csv("blablab.csv", dtype = {1,3,5: datetime64, 6-end: float64}

非常感谢,非常感谢您的帮助!

【问题讨论】:

    标签: python pandas multiple-columns dtype


    【解决方案1】:

    我建议在导入之前通过导入一行来构建 dtype 变量,以便您对默认类型进行默认 dict 理解,然后将列修改为特殊类型。我引入 StringIO 只是为了运行下面的测试用例。

    import pandas as pd
    import numpy as np
    from io import StringIO
    
    dummyCSV = """header 1,header 2,header 3
    1,2,3
    4,5,6
    7,8,9
    11,12,13
    14,15,16"""
    
    blabblab_csv = StringIO(dummyCSV, newline='\n')
    limitedRead = pd.read_csv(blabblab_csv, sep=",", nrows = 1)
    
    #set a default type and populate all column types
    defaultType = np.float64
    dTypes = {key: defaultType for key in list(limitedRead.columns)}
    #then override the columns you want, using the integer position
    dTypes[limitedRead.columns[1]] = np.int32
    
    blabblab_csv = StringIO(dummyCSV, newline='\n') #reset virtual file
    fullRead = pd.read_csv(blabblab_csv, sep=",", dtype = dTypes)
    

    我知道这对你来说可能有点晚了,但我只需要为我正在从事的一个项目这样做,所以希望下一次搜索该主题的人会有一个答案等待他们。

    【讨论】:

      【解决方案2】:

      一种方法是在创建DataFrame 后更改类型,如下所示:

      import pandas as pd
      df = pd.DataFrame({'a': ['a', 'b', 'c'], 'b': ['c', 'd', 'e'],
                         'c' : ['1','2','3'],'d' : ['4','5','6']})
      df[df.columns[2:]] = df[df.columns[2:]].astype(float)
      df['c']
      

      输出:

      0    1.0
      1    2.0
      2    3.0
      Name: c, dtype: float64
      

      这里我把最后两列的类型改成float

      【讨论】:

      • 感谢您的回答。由于性能问题,我需要在创建数据框之前更改 dtype。
      猜你喜欢
      • 2018-10-14
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2015-01-16
      • 2020-07-13
      • 2020-05-24
      • 2020-12-07
      相关资源
      最近更新 更多