2016-05-29 24 views
5

Pandas DF'i Spark one'a dönüştürmeye çalışıyorum. DF kafa:Pandalar veri çerçevesini Spark veri karesine dönüştürme hatası

10000001,1,0,1,12:35,OK,10002,1,0,9,f,NA,24,24,0,3,9,0,0,1,1,0,0,4,543 
10000001,2,0,1,12:36,OK,10002,1,0,9,f,NA,24,24,0,3,9,2,1,1,3,1,3,2,611 
10000002,1,0,4,12:19,PA,10003,1,1,7,f,NA,74,74,0,2,15,2,0,2,3,1,2,2,691 

Kodu:

dataset = pd.read_csv("data/AS/test_v2.csv") 
    sc = SparkContext(conf=conf) 
    sqlCtx = SQLContext(sc) 
    sdf = sqlCtx.createDataFrame(dataset) 

Ve bir hata var: Ben senin verilerle bu denedim ve çalışıyor

TypeError: Can not merge type <class 'pyspark.sql.types.StringType'> and <class 'pyspark.sql.types.DoubleType'> 
+2

İlk varsayımım, dosyanın bir sütunda hem sayı hem de dizgi içerdiğini ve Spark'in bununla karıştırıldığını gösteriyor. Ancak, ithal ederken Pandalar tarafından ele alınmalıdır. –

+0

DF'inizde sütun adları var mı? – MaxU

+0

Evet öyle. Onları devre dışı bırakmalı mıyım? –

cevap

9

Yapmanız gerekiyor pandalarınızın veri çerçevesi sütunlarının tür kıvılcımının uygun olduğuna emin olun. senin pandalar dataframe gibi bir şey listelerse:

pd.info() 
<class 'pandas.core.frame.DataFrame'> 
RangeIndex: 5062 entries, 0 to 5061 
Data columns (total 51 columns): 
SomeCol     5062 non-null object 
Col2      5062 non-null object 

Ve bu hata deneyin alıyoruz: Artık

df[['SomeCol', 'Col2']] = df[['SomeCol', 'Col2']].astype(str) 

, .astype(str) aslında söz konusu sütunlar olmak istiyorum türüdür emin olun. Temel olarak, temel Java kodu pythondaki bir nesneyi türden çıkarmaya çalıştığında, bazı gözlemler kullanır ve tahmin yapar, eğer bu tahmin, pandalardan dönüştürmeye çalışan sütun (lar) daki tüm veriler için geçerli değilse kıvılcım başarısız olur.

+0

Bunu çok yararlı buldum. Takip eden soru: Kendi veri ağım için bu adımları takip ettiğimde ve takip ettiğimde pd.info() 'da herhangi bir değişiklik görmedim. Dataframe'in kendisi tam olarak nasıl değişiyor? DataFrame'in .astype (str) kullandıktan sonra değiştiği pandaları nasıl görebilirim? – EntryLevelR

2

:

%pyspark 
import pandas as pd 
from pyspark.sql import SQLContext 
print sc 
df = pd.read_csv("test.csv") 
print type(df) 
print df 
sqlCtx = SQLContext(sc) 
sqlCtx.createDataFrame(df).show() 
İlgili konular