我在 pandas 中设置了我的数据类型,但是在转换为 pyspark 时,所有数据都转到了字符串

Posted

技术标签:

【中文标题】我在 pandas 中设置了我的数据类型,但是在转换为 pyspark 时,所有数据都转到了字符串【英文标题】:I set my data types in pandas , but while convert to pyspark all data go to string 【发布时间】:2021-06-29 13:44:10 【问题描述】:

我正在尝试定义我的数据框的数据类型,因此它们很快就会适合表格...

所以当我转换为 spark 时,它会忽略数据源并将所有内容设置为字符串

我的代码:

BDtable_FINAL = pd.DataFrame('data': ['0001-01-01 00:00:00', '2020-02-02 00:00:00', '2021-01-01 00:00:00'])

BDtable_FINAL = BDtable_FINAL[~BDtable_FINAL['data'].isin(['0001-01-01 00:00:00'])]
datainsert = datetime.now().strftime('%Y%m%d%H%M')
dateinsert= dateinsert[:8] + '0000'
BDtable_FINAL.insert(loc=0,column='dateinsert',value=dateinsert)

BDtable_FINAL.astype(
      'dateinsert'  : 'int64',
      'date': 'datetime64'
    )

spark_df = pandas_to_spark(BDtable_FINAL)
spark_df.printSchema()

我尝试了几种方法:

我正在使用数据块,因此我将数据帧传递给考拉并使用了本机 to_spark() 函数

我已经尝试直接在 spark 中设置数据,最后它总是将所有内容都保留为字符串

有人遇到过这个问题吗?

Essa é a minha função pandas_to_spark():

# Auxiliar functions
def equivalent_type(f):
    if f == 'datetime64[ns]': return TimestampType()
    elif f == 'int64': return LongType()
    elif f == 'int32': return IntegerType()
    elif f == 'float64': return FloatType()
    else: return StringType()

def define_structure(string, format_type):
    try: typo = equivalent_type(format_type)
    except: typo = StringType()
    return StructField(string, typo)

# Given pandas dataframe, it will return a spark's dataframe.
def pandas_to_spark(pandas_df):
    columns = list(pandas_df.columns)
    types = list(pandas_df.dtypes)
    struct_list = []
    print(columns, types)
    for column, typo in zip(columns, types): 
      struct_list.append(define_structure(column, typo))
    p_schema = StructType(struct_list)
    return sqlContext.createDataFrame(pandas_df, p_schema)
    ```

[![print][1]][1]


  [1]: https://i.stack.imgur.com/bMM7F.png

【问题讨论】:

大家好,我解决了这个问题:我忘了推断架构,它缺少:BD_Table_FINAL = BD_Table_FINAL.astype(...) 【参考方案1】:

我解决了这个问题:我忘了推断架构,它缺少:BD_Table_FINAL = BD_Table_FINAL.astype(...)

【讨论】:

以上是关于我在 pandas 中设置了我的数据类型,但是在转换为 pyspark 时,所有数据都转到了字符串的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:没有为实体 ZZZZ 上的属性 YYYY 找到类名为 XXX 的 NSValueTransformer

无法识别的选择器发送到实例

在 ViewController 中设置了 TableView 的数据源和委托,但没有任何反应

我在我的 Rails 应用程序中设置了 CORS,但我仍然收到错误 [重复]

SQLite 查询相关范围内的日期

windows xp字体问题