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

熊猫数据框拼花数据类型?

  •  3
  • micah  · 技术社区  · 6 年前

    我正在尝试使用熊猫和pyarrow来拼花数据。我有数百个拼花文件,它们不需要具有相同的模式,但是如果列在拼花之间匹配,它们必须具有相同的数据类型。

    我正在进入这样的情况,结果拼花地板数据类型不是我想要的类型。例如,我可以写一个 int64 到一列,结果拼花地板将在 double 格式。这在处理方面造成了很多麻烦,99%的数据是正确输入的,但在1%的情况下,它只是错误的类型。

    我尝试导入numpy并用这种方式包装这些值-

    import numpy as np
    
    pandas.DataFrame({
      'a': [ np.int64(5100), np.int64(5200), np.int64(5300) ]
    })
    

    但我还是偶尔得到双份的,所以这肯定是错误的做法。如何确保数据类型在拼花地板文件的列之间一致?

    更新-

    我发现只有当列包含一个或多个 None S.

    data_frame = pandas.DataFrame({
      'a': [ None, np.int64(5200), np.int64(5200) ]
    })
    

    拼花地板能不能处理混合的非Int64色?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Uwe L. Korn    6 年前

    pandas本身目前无法处理整数列中的空/na值(版本0.23.x)。在下一个版本中,将有一个可以为空的整数类型。同时,一旦整数列中有一个空值,panda会自动将其转换为浮点列。因此,在生成的拼花图文件中也有一个浮动列:

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({
      'a': [np.int64(5100), np.int64(5200), np.int64(5300)]
    })
    # df['a'].dtype == dtype('int64')
    df = pd.DataFrame({
      'a': [None, np.int64(5200), np.int64(5200)]
    })
    # df['a'].dtype == dtype('float64')