Python 如果列数据类型的所有元素都为null,如何强制转换该列数据类型?

Python 如果列数据类型的所有元素都为null,如何强制转换该列数据类型?,python,pandas,parquet,pyarrow,Python,Pandas,Parquet,Pyarrow,我的数据库中有一些属性,从这个大数据集开始,我必须将其拆分为不同的拼花文件:每天1个 每个拼花文件的列必须具有相同的数据类型,但是通常情况下,一天中某个特定属性的所有记录都为Null,因此列的数据类型似乎为Null,而当至少有一个有效记录时,数据类型具有正确的类型。对于我的应用程序来说,每个拼花地板文件都具有相同的数据类型是很重要的。我怎样才能获得这个结果 具体而言,有4种情况: 日期时间列 整数列 字符串列 浮柱 为了给出一个例子,我将复制2个parquets文件的粘贴列模式。 这是两个帕奎特

我的数据库中有一些属性,从这个大数据集开始,我必须将其拆分为不同的拼花文件:每天1个

每个拼花文件的列必须具有相同的数据类型,但是通常情况下,一天中某个特定属性的所有记录都为Null,因此列的数据类型似乎为Null,而当至少有一个有效记录时,数据类型具有正确的类型。对于我的应用程序来说,每个拼花地板文件都具有相同的数据类型是很重要的。我怎样才能获得这个结果

具体而言,有4种情况:

  • 日期时间列
  • 整数列
  • 字符串列
  • 浮柱
  • 为了给出一个例子,我将复制2个parquets文件的粘贴列模式。 这是两个帕奎特,上传到熊猫上,用于两个不同的日子:

             NEW1                                             NEW2                               NEW3 
    0   {"id":{"VAR1": 1}}      {"AA":{"VAR2": 2, "ACTUAL_END": "2002-03-01T13:00:00Z"}}      {"TS": 6}
    1   {"id":{"VAR1": 2}}      {"AA":{"VAR2": 4, "ACTUAL_END": "2002-03-01T13:00:00Z"}}      {"TS":12}
    2   {"id":{"VAR1": 3}}      {"AA":{"VAR2": 6, "ACTUAL_END": None}}                        {"TS":18}
    3   {"id":{"VAR1": 4}}      {"AA":{"VAR2": 8, "ACTUAL_END": None}}                        {"TS":24}
    4   {"id":{"VAR1": 5}}      {"AA":{"VAR2":10, "ACTUAL_END": "2002-03-01T13:00:00Z"}}      {"TS":30}
    5   {"id":{"VAR1": 6}}      {"AA":{"VAR2":12, "ACTUAL_END": "2002-03-01T13:00:00Z"}}      {"TS":36}
    
    这是我尝试使用检查文件时的结果

    
    import pyarrow.parquet as pq
    pfile = pq.read_table("my_transformed.parquet")
    print("Schema: {}".format(pfile.schema))
    
    第一种情况,每个属性至少有一条有效记录


    Schema:_myschema:struct您如何创建最终保存到拼花地板文件中的表?通常,在创建表时应该有一种方法来指定模式,这样它就不必猜测了。我正在读取一个csv,我在日期上迭代拆分它,然后将每个块保存为拼花文件。创建块后,如果其在列中的所有记录都为null,则列类型为null。明天我将更新我的示例,这样您就可以创建自己的pandas数据帧,只需将其复制粘贴到“pd.dataframe.from_dict()”中,然后检查自己的数据类型。在将区块转换为pyarrow/将其写入parquet时,我将更新您,您应该能够指定要使用的模式。
    
    import pyarrow.parquet as pq
    pfile = pq.read_table("my_transformed.parquet")
    print("Schema: {}".format(pfile.schema))