我有两个数据框。它们中的列集略有不同 df1:
id col1 col2 col3
1 15 20 8
2 0 null 5
df2:
id col1 col2 col4
1 10 10 40
2 10 30 50
请告诉我如何获取这些数据框的并集?在这种情况下,您需要合并列 result_df:
id col1 col2 col3 col4
1 15 20 8 40
2 0 30 5 50
我需要将两个数据帧与id合并以获得额外的列col4,对于col1,col2,col3,请从df1获取值,除非该值为null,在这种情况下,请用df2的值替换它。
答案 0 :(得分:2)
join
上使用 id
,然后跟随when
/ otherwise
模式。该代码适用于您的示例:
from pyspark.sql.functions import when
result = (df1.join(df2, on=['id']).
withColumn('_col1', when(df1['col1'].isNotNull(), df1['col1']).otherwise(df2['col1'])).
withColumn('_col2', when(df1['col2'].isNotNull(), df1['col2']).otherwise(df2['col2'])).
select('id', '_col1', '_col2', 'col3', 'col4').
toDF('id', 'col1', 'col2', 'col3', 'col4'))
答案 1 :(得分:0)
您可以根据ID组合2个数据框:
df = pd.merge(df1, df2, on = 'id')
df
答案 2 :(得分:0)
这里是:
import pandas as pd
id=[1,2]
col1= [15,0]
col2=[20,'']
col3=[8,5]
dict_1 = {'id':id,'col1': col1, 'col2': col2, 'col3':col3}
df1= pd.DataFrame(dict_1)
id=[1,2]
col1= [10,10]
col2=[10,30]
col3=[40,50]
dict_2 = {'id':id,'col1': col1, 'col2': col2, 'col3':col3}
df2= pd.DataFrame(dict_2)
df_merge = pd.concat([df1,df2])
df_merge