初始数据流:
+--+---+
|id|num|
+--+---+
|4 |9.0|
+--+---+
|3 |7.0|
+--+---+
|2 |3.0|
+--+---+
|1 |5.0|
+--+---+
产生的数据frame:
+--+---+-------+
|id|num|new_Col|
+--+---+-------+
|4 |9.0| 7.0 |
+--+---+-------+
|3 |7.0| 3.0 |
+--+---+-------+
|2 |3.0| 5.0 |
+--+---+-------+
我通常通过使用以下内容将新列“追加”到dataframe:df.withcolumn(“new_col”,df.num*10)
您可以使用lag
窗口函数,如下所示
from pyspark.sql.functions import lag, col
from pyspark.sql.window import Window
df = sc.parallelize([(4, 9.0), (3, 7.0), (2, 3.0), (1, 5.0)]).toDF(["id", "num"])
w = Window().partitionBy().orderBy(col("id"))
df.select("*", lag("num").over(w).alias("new_col")).na.drop().show()
## +---+---+-------+
## | id|num|new_col|
## +---+---+-------|
## | 2|3.0| 5.0|
## | 3|7.0| 3.0|
## | 4|9.0| 7.0|
## +---+---+-------+
但有一些重要的问题:
问题内容: 我了解pandas旨在加载完全填充的内容,但是我需要创建一个空的DataFrame然后逐行添加行。做这个的最好方式是什么 ? 我成功创建了一个空的DataFrame: 然后,我可以添加新行,并用以下字段填充字段: 它有效,但看起来很奇怪:(添加字符串值失败) 如何将新行添加到DataFrame(具有不同的列类型)? 问题答案:
问题内容: 我想知道是否有一种等效的方法将行添加到具有MultiIndex的Series或DataFrame中,就像使用单个索引一样,即使用.ix还是.loc? 我以为自然的方式就像 但这会引发KeyError。我知道我可以使用.append(),但使用.ix []或.loc []会更整洁。 这里有个例子: 问题答案: 您必须指定一个元组才能使多索引工作(并且您必须完全指定所有轴,例如必需) 但是
那么,如何使用PySpark向现有的DataFrame添加一个新列(基于Python vector)呢?
本文向大家介绍向Pandas中的现有DataFrame添加新列,包括了向Pandas中的现有DataFrame添加新列的使用技巧和注意事项,需要的朋友参考一下 Pandas 数据框是一种二维数据结构,即,数据以表格的形式在行和列中对齐。可以使用python dict,list和series等创建它。在本文中,我们将看到如何在现有数据框中添加新列。因此,首先让我们使用pandas系列创建一个数据框。
问题内容: 我想知道如何在Spark(Pyspark)中实现以下目标 初始数据框: 结果数据框: 我通常使用以下方法设法将新列“追加”到数据框: 但是,我不知道如何为新列实现这种“行移位”,以便新列具有上一行的字段值(如示例中所示)。我也无法在API文档中找到有关如何通过索引访问DF中特定行的任何内容。 任何帮助,将不胜感激。 问题答案: 您可以如下使用窗口功能 但是有一些重要的问题: 如果您需要
问题内容: 我在尝试获取另一列中的字符串值的字符计数列时遇到问题,但还没有弄清楚如何有效地做到这一点。 显然,这涉及首先创建一个null列,然后将其重写,这对我的数据集要花费很长时间。那么获得这样的东西最有效的方法是什么 我已经检查了很多,但是还无法弄清楚。 问题答案: Pandas为此使用了矢量化字符串方法:。要创建新列,您可以编写: 例如: 这应该比使用Python循环在DataFrame上循