首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中比较两个DataFrame (StructType)

如何在python中比较两个DataFrame (StructType)
EN

Stack Overflow用户
提问于 2018-11-06 05:12:20
回答 1查看 1.1K关注 0票数 0

本质上,这是比较两个数据帧,我可以用来比较它们的名称:

代码语言:javascript
复制
def diff(first, second):
    second = set(second)
    return [item for item in first if item not in second]

但是我还希望不仅在名称上而且在数据类型上进行比较

示例数据框如下:

代码语言:javascript
复制
>>> pDF1.schema
StructType(
List(
StructField(Scen_Id,IntegerType,true),
StructField(Flow_Direction,StringType,true),
StructField(Dataset_Type,StringType,true),
StructField(Flag_Extrapolation_Percent_Change_Stay,IntegerType,true)
)
)

>>> pDF2.schema
StructType(
List(
StructField(Scen_Id,StringType,true),
StructField(Flow_Direction,StringType,true),
StructField(Dataset_Type,StringType,true),
StructField(Flag_Extrapolation_Percent_Change_Stay,IntegerType,true)
)
)

正如您从这个特定的简化示例中看到的(通常情况下,我们的数据帧包含100多个字段),除了第一个字段具有不同的数据类型之外,pDF2与pDF1具有相同的名称/数据类型。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-11-07 21:54:58

好的,那么答案确实非常简单,如下所示,供将来的读者参考:

代码语言:javascript
复制
def diff(first, second):
    second = set(second)
    return [item for item in first if item not in second]

dl1_fields = list(pDF1.schema.fields)

dl2_fields = list(pDF2.schema.fields)

print("=========================================================")
print("schema comparison result:")
print("=========================================================")
dl1Notdl2 = diff(dl1_fields, dl2_fields)
print(str(len(dl1Notdl2)) + " columns in first df but not in second")
pprint.pprint(dl1Notdl2)
print("=========================================================")
dl2Notdl1 = diff(dl2_fields, dl1_fields)
print(str(len(dl2Notdl1)) + " columns in second df but not in first")
pprint.pprint(dl2Notdl1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53162285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档