我有一个根据以下代码创建的熊猫日期列表。
import pandas as pd
panda_datelist = pd.bdate_range(pd.datetime.today(), periods=3).tolist()
我想将panda_datelist
转换为python列表。看起来应该是这样的;
python_datelist_from_panda = ['10/2/2017','10/3/2017','10/4/2017']
我正在使用python v3.6
答案 0 :(得分:1)
In [4554]: map(lambda x: x.strftime('%m/%d/%Y'), panda_datelist)
Out[4554]: ['10/20/2017', '10/23/2017', '10/24/2017']
或者,使用map
In [4559]: pd.bdate_range(pd.datetime.today(), periods=3).strftime('%m/%d/%Y')
Out[4559]:
array([u'10/20/2017', u'10/23/2017', u'10/24/2017'],
dtype='<U10')
但是,在转换为列表之前,您实际上可以使用strftime
In [4555]: panda_datelist
Out[4555]:
[Timestamp('2017-10-20 00:00:00', freq='B'),
Timestamp('2017-10-23 00:00:00', freq='B'),
Timestamp('2017-10-24 00:00:00', freq='B')]
详细
import org.apache.spark.sql.functions._
import org.apache.spark.mllib.linalg.DenseVector
val ds = Seq(
("val1", 0.0, 1.0, 1.0),
("val2", 2.0, 1.0, 5.0)
).toDF("name", "a", "b", "c").
as[(String, Double, Double, Double)]
val colList = ds.columns
val keyCol = colList(0)
val valCols = colList.drop(1)
def arrToVec = udf(
(s: Seq[Double]) => new DenseVector(s.toArray)
)
ds.select(
col(keyCol), arrToVec( array(valCols.map(x => col(x)): _*) ).as("values")
).show
// +----+-------------+
// |name| values|
// +----+-------------+
// |val1|[0.0,1.0,1.0]|
// |val2|[2.0,1.0,5.0]|
// +----+-------------+