以下内容似乎不正确(df1 = pd.read_csv('df1.csv', names=['a','b'])
print (df1)
a b
0 Time 07:03:52
1 EmployeeID 98766
2 EmployeeName Joao
3 Time 08:03:52
4 EmployeeID 98765
5 EmployeeName Mary
#for columns names created from file2
df2 = pd.read_csv('df2.csv')
c = df2.columns.str.strip().tolist()
print (c)
['EmployeeID', 'EmployeeName', 'Time']
#or defined in list
#c = ['Time', 'EmployeeID', 'EmployeeName']
g = df1.groupby('a').cumcount()
df1 = df1.set_index([g,'a'])['b'].unstack().reindex(columns=c)
print (df1)
a EmployeeID EmployeeName Time
0 98766 Joao 07:03:52
1 98765 Mary 08:03:52
):
spark.sql
与:相比:
select unix_timestamp("2017-07-03T12:03:56", "yyyy-MM-dd'T'hh:mm:ss")
-- 1499040236
显然第一个是在第二个之后。第二个似乎是正确的:
select unix_timestamp("2017-07-03T00:18:31", "yyyy-MM-dd'T'hh:mm:ss")
-- 1499041111
类似的计算显示第一个应该是# ** R Code **
# establish constants
one_day = 60 * 60 * 24
one_year = 365 * one_day
one_year_leap = 366 * one_day
one_quad = 3 * one_year + one_year_leap
# to 2014-01-01
11 * one_quad +
# to 2017-01-01
2 * one_year + one_year_leap +
# to 2017-07-01
(31 + 28 + 31 + 30 + 31 + 30) * one_day +
# to 2017-07-03 00:18:31
2 * one_day + 18 * 60 + 31
# [1] 1499041111
(在R中由1499083436
确认),而as.integer(as.POSIXct('2017-07-03 12:03:56', tz = 'UTC'))
应与1499040236
对应。
那么这里发生了什么?它当然看起来像一个bug。最后两次完整性检查 - 2017-07-03 00:03:56
正确返回select unix_timestamp("2017-07-03T00:03:56", "yyyy-MM-dd'T'hh:mm:ss")
;并用空格1499040236
替换中间的T
对错误的解析没有影响。
由于它似乎已在开发中修复,我会注意到它位于。
答案 0 :(得分:3)
这只是格式错误:
SimpleDateFormat
中表示为HH
)。hh
格式。事实上,在最新的Spark版本(2.3.0 RC1)中,它根本不会解析:
spark.version
String = 2.3.0
spark.sql("""
select unix_timestamp("2017-07-03T00:18:31", "yyyy-MM-dd'T'hh:mm:ss")""").show
+----------------------------------------------------------+
|unix_timestamp(2017-07-03T00:18:31, yyyy-MM-dd'T'hh:mm:ss)|
+----------------------------------------------------------+
| null|
+----------------------------------------------------------+