给定两个Dataframe。
df1是:
|emp_id|emp_site |emp_name
|1 |Washigton | [Will, Smith]
|2 |null | null
|3 |New York | [Norman, Smith]
|4 |Iowa | [Ian, Smith]
df2是:
|emp_id|emp_site |emp_name
|1 |Washigton | [Watson, Smith]
|2 |Wisconsin | [Sam, Robinson]
|3 |New York | null
|4 |Illinois | [Ican, Robinson]
|5 |Pennsylvania | [Patrick, Robinson]
应该是一个df3,它是空的\u id列上df1和df2的连接(外部连接,以便所有df2记录都可用)。只有当df1和df2的相应列值不同时,df3才使所有列(empïu id除外)以“from”、“to”和“change”的形式表示(注意:如果df1和df2的列值相等,则应为null)。
注意:虽然“from”和“to”是自解释的,包含df1和df2中的值,但如果“from”值为null,则“change”表示“insert”。否则表示“更新”
|emp_id|emp_site |emp_name
|1 |null |[from -> [Will, Smith], to -> [Watson, Smith], change->update]
|2 |[to->Wisconsin, change->insert] |[to -> [Sam, Robinson], change->update]
|3 |null |[from -> [Norman, Smith], change->update]
|4 |[from ->Iowa, to -> Illinois, change->insert] |[from ->[Ian, Smith], to -> [Ican, Robinson], change-> insert]
|5 |[to -> Pennsylvania, change->insert] | [to -> [Patrick, Robinson], change->insert]
尝试使用map实现所需的df3没有成功(特别是因为列类型并不总是字符串,即“from”和“to”可以根据df1和df2中的列类型保存结构类型)。尝试使用map数据结构在df3中构建“from”、“to”和“change”的原因是,最终这个df3需要转换成json。
非常感谢您的帮助。
1条答案
按热度按时间t30tvxxf1#
试试这个-
1. 加载输入
2. 按所需格式处理
3. 如果输入列的数据类型不是string(基于注解),则使用struct
请注意
from
以及to
不存在,我正在使用更改作为null
,你可以把它改成no-op