我使用的是PySpark2.4.0,我有一个数据框,下面有列
a,b,b 0,1,1.0 1,2,2.0
如果没有任何连接,我只能保留b列中的一个,并删除另一个b列我怎样才能做到这一点
gmxoilav1#
这也许对你有帮助,将Dataframe转换为rdd,提取所需字段并转换回Dataframe,
from pyspark.sql import Row rdd = df.rdd.map(lambda l: Row(a=l[0], b=l[1])) required_df = spark.creataDataFrame(rdd) +---+---+ | a| b| +---+---+ | 0| 1| | 1| 2| +---+---+
ohfgkhjo2#
当我加入时,我也遇到了同样的情况。最佳做法是在加入表之前重命名列:您可以参考以下链接:sparkDataframe区分名称重复的列从两个同名列中选择一个列很容易混淆,因此最好的方法是在一个Dataframe中不要有同名列。
0wi1tuuw3#
也许这是有帮助的-
val df = Seq((0, 1, 1.0), (1, 2, 2.0)).toDF("a", "b", "b") df.show(false) df.printSchema() /** * +---+---+---+ * |a |b |b | * +---+---+---+ * |0 |1 |1.0| * |1 |2 |2.0| * +---+---+---+ * * root * |-- a: integer (nullable = false) * |-- b: integer (nullable = false) * |-- b: double (nullable = false) */ df.toDF("a", "b", "b2").drop("b2").show(false) /** * +---+---+ * |a |b | * +---+---+ * |0 |1 | * |1 |2 | * +---+---+ */
fdx2calv4#
试试这个:
col_select = list(set(df.columns)) df_fin = df.select(col_select)
4条答案
按热度按时间gmxoilav1#
这也许对你有帮助,
将Dataframe转换为rdd,提取所需字段并转换回Dataframe,
ohfgkhjo2#
当我加入时,我也遇到了同样的情况。最佳做法是在加入表之前重命名列:您可以参考以下链接:
sparkDataframe区分名称重复的列
从两个同名列中选择一个列很容易混淆,因此最好的方法是在一个Dataframe中不要有同名列。
0wi1tuuw3#
也许这是有帮助的-
fdx2calv4#
试试这个: