我在 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 的数据源和委托,但没有任何反应