将熊猫日期列表转换为日期字符串的python列表

时间:2017-10-20 03:24:08

标签: python python-3.x pandas date

我有一个根据以下代码创建的熊猫日期列表。

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

1 个答案:

答案 0 :(得分:1)

使用list comprehension

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]|
// +----+-------------+
相关问题