2017-09-14 3 views
0

저는 Atr1, Atr2 및 Atr3의 세 가지 속성을 가진 데이터 프레임에서 인스턴스를 추출했습니다.인스턴스가 pyspark의 데이터 프레임에 있는지, 데이터 프레임에서 ocurrence가 있는지 어떻게 확인할 수 있습니까?

반면에 Atr1, Atr2, Atr3, Atr4와 같은 4 가지 특성을 포함하는 데이터 프레임이 있지만 Atrib1, Atr2 및 Atr3은 앞에서 언급 한 인스턴스와 같습니다. 나는 이런 일이 :

Instance: 

[Row(Atr1=u'A', Atr2=u'B', Atr3=24)] 

Dataframe: 

+------+------+------+------+ 
| Atr1 | Atr2 | Atr3 | Atr4 | 
+------+------+------+------+ 
| 'C' | 'B' | 21 | 'H' | 
+------+------+------+------+ 
| 'D' | 'B' | 21 | 'J' | 
+------+------+------+------+ 
| 'E' | 'B' | 21 | 'K' | 
+------+------+------+------+ 
| 'A' | 'B' | 24 | 'I' | 
+------+------+------+------+ 

그래서, 위의 인스턴스를 가지고, 나는 그것이 속성 ATR1, Atr2 및 Atr3에 대한 그 값으로 dataframe에서 인스턴스를 존재하는지 여부를 검사 할을하고있는 경우, 취득 Atr4의 값 이 경우, '나'.

답변

0

이 대답입니까? row 행과 df 당신이 했나요 DataFrame와

df[(df['Atr1'] == row.Atr1) & (df['Atr2'] == row.Atr2) & (df['Atr3'] == row.Atr3)].Atr4 

.

0

희망이 도움이됩니다.

from pyspark.sql.types import Row 
from pyspark.sql.functions import col 

#sample data 
row_list = [Row(Atr1=u'A', Atr2=u'B', Atr3=24), 
      Row(Atr1=u'E', Atr2=u'F', Atr3=20),] 
df = sc.parallelize([('C', 'B', 21, 'H'), 
        ('D', 'B', 21, 'J'), 
        ('E', 'B', 21, 'K'), 
        ('A', 'B', 24, 'I')]).\ 
    toDF(["Atr1", "Atr2", "Atr3", "Atr4"]) 

search_df = df.join(sqlContext.createDataFrame(row_list), ["Atr1", "Atr2", "Atr3"], "right").\ 
    withColumn("rowItem_Exist", col('Atr4').isNotNull()) 
search_df.show() 

출력된다 :이 해결되면

+----+----+----+----+-------------+ 
|Atr1|Atr2|Atr3|Atr4|rowItem_Exist| 
+----+----+----+----+-------------+ 
| E| F| 20|null|  false| 
| A| B| 24| I|   true| 
+----+----+----+----+-------------+ 
+0

@jartymcfly PLS는 (https://stackoverflow.com/help/someone-answers) 정답으로 마크를] 잊지 말고 너의 문제 :) – Prem

관련 문제