代码之家  ›  专栏  ›  技术社区  ›  mon

pandas read_json-dtype=pd。类别dtype不起作用,但dtype=“类别”起作用

  •  0
  • mon  · 技术社区  · 2 年前

    这是一个已知的问题吗 CategoricalDtype read_json中的dtype没有转换列dtype,或者代码中有错误吗?

    import pandas as pd
    
    df = pd.read_json(
        "./data/data.json",
        dtype={
            #"facility": pd.CategoricalDtype, # does not work
            "facility": 'category',           # does work
            "supplier": pd.CategoricalDtype,  # does not work
        }
    )
    df.info()
    -----
     #   Column        Non-Null Count  Dtype         
    ---  ------        --------------  -----         
     0   facility      232 non-null    category      
     3   supplier      111 non-null    object     
    

    环境

    MacOS 13.0.1 (22A400)
    $ python --version
    Python 3.9.13
    $ pip list | grep pandas
    pandas                      1.5.2
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   OQOBANANUS    2 年前

    根据 documentation :

    由于dtype='category'本质上是类别dtype(None,False),并且由于所有实例类别dtype比较等于“类别”,因此无论类别或顺序如何,类别dtype的所有实例都比较等于类别dtype。

    尝试:

    "supplier": pd.CategoricalDtype()