list, dict, tuple,rowproxy 转dataframe,pandas的df与spark的df互转

 #res=DbService.getTrainData("F20000",3)#sqlalchemy查询结果--》rowproxy
 #res=DbService.getTestMysqlDb("F20000",3)#MySQLdb查询结果--》tuple
 #res=MetaDataDao.findByDrgId2("F20000")#PymysqlPool封装查询结果---》dict
 #row2Dataframe(res)
 #convert2Dataframe(res)
 #dict2Dataframe(res)

#tuple转dataframe====>mysqlDb查询结果
def convert2Dataframe(data):
    df=pd.DataFrame(list(data),columns=["akc190","yka055","yp_sum","ypzf_yp","hl_sum"])
    ss=df[["yka055","akc190"]]#dataframe数据选取
    print(df)
#dict转dataframe
def dict2Dataframe(data):
    df=pd.DataFrame(data)
    df2=pd.DataFrame.from_dict(data)
    print(df)
#rowproxy转dataframe
def row2Dataframe(data):
    arrs=[]
    for d in data:
        flag1=type(d)
        # todo 转tuple
        res=d._row
        arrs.append(res)
    #todo list[tuple] 转dataframe
    convert2Dataframe(arrs)

#第二种:rowproxy转dataframe
def row2Dataframe(data):
    df=pd.DataFrame(data,columns=["akc190","yka055","yp_sum","ypzf_yp","hl_sum"])
    ss=df[["yka055","akc190"]]#dataframe数据选取

pandas的df与spark的df进行互转

import pandas as pd
from pyspark import SQLContext
from pyspark.sql import SparkSession
import pyspark.sql.types as typ

'''pandas dataframe转spark df'''

##直接调用官方api进行转换
def createSpark():
    spark=SparkSession.builder.getOrCreate()
    df=pd.read_excel('C:\\Users\\shea\\Desktop\\测试.xlsx')
    print(df)
    #使用sqlContext转换
    sqlContext=SQLContext(spark.sparkContext)
    spark_df=sqlContext.createDataFrame(df)
    spark_df.select("bah").show()
#使用shema转换--针对某些列 有特殊值,不能模板匹配类型
def convert2Spakr():
    columns=[
        ('bah',typ.StringType()),
        ('name', typ.StringType()),
        ('sex', typ.IntegerType()),
        ('akc194', typ.StringType()),
        ('zzfs', typ.StringType())
    ]
    schema=typ.StructType([
        typ.StructField(index[0],index[1],False) for index in columns
    ])

    spark = SparkSession.builder.getOrCreate()
    df = pd.read_excel('C:\\Users\\shea\\Desktop\\测试.xlsx')

    df['akc194']=df['akc194'].map(lambda x:str(x))#操作某一列,将timestamp转为为string

    #dataframe转list
    ss=df.values.tolist()
    ss_tuple=list(map(lambda x:tuple(x),ss))
    spark_df=spark.createDataFrame(ss_tuple,schema=schema)
    spark_df.show()


if __name__ == '__main__':
    #createSpark()
    convert2Spakr()

 

转载于:https://my.oschina.net/shea1992/blog/3029197

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值