【发布时间】:2022-01-27 03:47:59
【问题描述】:
我有两个数据框 df1 和 df2。
df1 有 174 列,df2 有 175 列。
我怎样才能找到哪一列是多余的?
【问题讨论】:
-
感谢您的解决方案,但在我的情况下,两个数据框中的列数不同
标签: dataframe scala apache-spark databricks
我有两个数据框 df1 和 df2。
df1 有 174 列,df2 有 175 列。
我怎样才能找到哪一列是多余的?
【问题讨论】:
标签: dataframe scala apache-spark databricks
只需将列列表转换为集合,并对这些集合使用diff 操作,如下所示:
df2.columns.toSet.diff(df1.columns.toSet)
请注意,比较的顺序很重要,例如,df1.columns.toSet.diff(df2.columns.toSet) 不会产生所需的差异。如果你想让差异独立于位置,你可以使用这样的东西:
df2.columns.toSet.diff(df1.columns.toSet).union(
df1.columns.toSet.diff(df2.columns.toSet))
【讨论】:
在pyspark,你可以使用下面的逻辑。
dept = [("Finance",10),
("Marketing",20),
("Sales",30),
("IT",40)
]
deptColumns = ["dept_name","dept_id"]
dept1 = [("Finance",10,'999'),
("Marketing",20,'999'),
("Sales",30,'999'),
("IT",40,'999')
]
deptColumns1 = ["dept_name","dept_id","extracol"]
deptDF = spark.createDataFrame(data=dept, schema = deptColumns)
dept1DF = spark.createDataFrame(data=dept1, schema = deptColumns1)
deptDF_columns=deptDF.schema.names
dept1DF_columns=dept1DF.schema.names
list_difference = []
for item in dept1DF_columns:
if item not in deptDF_columns:
list_difference.append(item)
print(list_difference)
测试代码:
【讨论】:
deptDF_columns 有一个额外列的场景。 list_difference = set(deptDF_columns) ^ set(dept1DF_columns) 应该会给你两个列表的区别。