List 创建二维列表,然后在Scala中生成数据帧
我有一个日期格式列表:(天,小时,分钟)-->(5,3,12) 我想在列表中插入这些数据。e、 g.((5,3,12),(1,14,21),…) 我是Scala的新手,我不知道如何做到这一点。然后我需要从这些数据创建一个数据帧List 创建二维列表,然后在Scala中生成数据帧,list,scala,dataframe,maven,List,Scala,Dataframe,Maven,我有一个日期格式列表:(天,小时,分钟)-->(5,3,12) 我想在列表中插入这些数据。e、 g.((5,3,12),(1,14,21),…) 我是Scala的新手,我不知道如何做到这一点。然后我需要从这些数据创建一个数据帧 data = Seq( (l , m , r) ).toDF("day", "hour", "minutes") 像这样。如果有人能告诉我这样做的最佳实践,我将不胜感激。谢谢也许我需要更
data = Seq(
(l , m , r)
).toDF("day", "hour", "minutes")
像这样。如果有人能告诉我这样做的最佳实践,我将不胜感激。谢谢也许我需要更多地提出我的问题。我在Python中也做了同样的事情。İt似乎是:
for index in table:
index = str(index)
parts = index.split(" ") #first element is part0
hours_minutes_second = parts[1].split(":")
year = parts[0].split("-")
dates=(year[0],year[1],year[2],hours_minutes_second[0],hours_minutes_second[1],hours_minutes_second[2])
data.append(dates)
df = pd.DataFrame(data, columns = ['day','hours','minutes'])
您不必担心数据的索引和格式。我需要的是,创建一个二维列表,然后制作它的数据框架
[
( '25', '06', '55'),
( '24', '14', '51'),
( '24', '06', '24'),
( '24', '03', '42'),
('23','19','30')]对于您的问题,我假设您想要创建一个Spark数据帧 与Scala列表完全不同 要创建数据帧,首先需要创建模式。你可以这样做:
val schema = StructType(
List(
StructField("day", IntegerType),
StructField("hour", IntegerType),
StructField("minutes", IntegerType)
))
有几种方法可以创建数据帧,例如:
给定一个Seq[Row],您可以创建一个RDD[Row],然后从中创建数据帧:
val rdd : RDD[Row]= spark.sparkContext.parallelize(Seq(Row(5,3,12)))
val df = spark.createDataFrame(rdd, schema)
df.show()
/*
+---+----+-------+
|day|hour|minutes|
+---+----+-------+
| 5| 3| 12|
+---+----+-------+
*/
对于二维列表的情况:
val schema2 = StructType(
List(
StructField("day", StringType),
StructField("hour", StringType),
StructField("minutes", StringType)
))
val list = List(
Seq("25", "06", "55"),
Seq("24", "14", "51"),
Seq("24", "06", "24"),
Seq("24", "03", "42"),
Seq("23", "19", "30"))
val rdd : RDD[Row]= spark.sparkContext.parallelize(list.map(el => Row.fromSeq(el)))
val df = spark.createDataFrame(rdd, schema2)
df.show()
/*
+---+----+-------+
|day|hour|minutes|
+---+----+-------+
| 25| 06| 55|
| 24| 14| 51|
| 24| 06| 24|
| 24| 03| 42|
| 23| 19| 30|
+---+----+-------+
*/
您使用的是Spark数据帧吗?