我有这样的数据框
Date Player Fee
0 2017-01-08 Steven Berghuis 6500000
1 2017-07-18 Jerry St. Juste 4500000
2 2017-07-18 Ridgeciano Haps 600000
3 2017-01-07 Sofyan Amrabat 400000
我想改变每个日期值str如果他们匹配的条件
def is_in_range(x):
ses1 = pd.to_datetime('2013-02-01')
ses2 = pd.to_datetime('2014-02-01')
ses3 = pd.to_datetime('2015-02-01')
ses4 = pd.to_datetime('2016-02-01')
ses5 = pd.to_datetime('2017-02-01')
ses6 = pd.to_datetime('2018-02-01')
if x < ses1 :
x = '2012-13'
if x > ses2 and x < ses3 :
x = '2013-14'
if x > ses3 and x < ses4 :
x = '2014-15'
if x > ses4 and x < ses5 :
x = '2015-16'
if x > ses5 and x < ses6 :
x = '2016-17'
return ses6
aj = ajax_t['Date'].apply(is_in_range)
aj
在()18 x='2016-17'19返回ses6中的TypeError回溯(最近一次调用)---
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/series.py in apply(self,func,convert_dtype,args,**kwds)2353
其他:2354 values=self.asobject-
熊猫/_libs/src/inference.pyx_libs.lib.map_infer(熊猫/_libs/lib. c: 66645)()
in是在(x)范围内,如果x
pandas/_libs/tslib.pyx在pandas中。_libs.tslib._Timestamp.richcmp(pandas/_libs/tslib.c:20281)()
TypeError:无法将类型“Timestamp”与类型“str”进行比较
我得到这个错误的任何建议,好心
显然,您没有将Date
列作为DateTime
加载到dataframeajax\t
中。尝试转换它
ajax_t['Date'] = pd.to_datetime(ajax_t.Date)
或者如果从文件加载DataFrameajax_t
,例如,data.csv
文件,则可以指定参数来强制解析Date
列为DateTime
类型。
ajax_t = pd.read_csv('data.csv', parse_dates=['Date'])
希望这会有帮助。
使用pd.cut
ses1 = pd.to_datetime('2013-02-01')
ses2 = pd.to_datetime('2014-02-01')
ses3 = pd.to_datetime('2015-02-01')
ses4 = pd.to_datetime('2016-02-01')
ses5 = pd.to_datetime('2017-02-01')
ses6 = pd.to_datetime('2018-02-01')
pd.cut(df.Date,[ses1,ses2,ses3,ses4,ses5,ses6],labels=['2012-13','2013-14','2014-15','2015-16','2016-17'])
Out[1227]:
0 2015-16
1 2016-17
2 2016-17
3 2015-16
Name: Date, dtype: category
或
ses = pd.to_datetime(['2013-02-01','2014-02-01','2015-02-01','2016-02-01','2017-02-01','2018-02-01'])
pd.cut(df.Date,ses,labels=['2012-13','2013-14','2014-15','2015-16','2016-17'])
如有必要,您需要将列转换为_datetime
,并将变量x
更改为另一个,如y
,因为它在循环中被覆盖。
此外,变量y
应该从函数返回:
ajax_t['Date'] = pd.to_datetime(ajax_t['Date'])
def is_in_range(x):
print (x)
ses1 = pd.to_datetime('2013-02-01')
ses2 = pd.to_datetime('2014-02-01')
ses3 = pd.to_datetime('2015-02-01')
ses4 = pd.to_datetime('2016-02-01')
ses5 = pd.to_datetime('2017-02-01')
ses6 = pd.to_datetime('2018-02-01')
if x < ses1 :
y = '2012-13'
if x > ses2 and x < ses3 :
y = '2013-14'
if x > ses3 and x < ses4 :
y = '2014-15'
if x > ses4 and x < ses5 :
y = '2015-16'
if x > ses5 and x < ses6 :
y = '2016-17'
return y
aj = ajax_t['Date'].apply(is_in_range)
print (aj)
0 2015-16
1 2016-17
2 2016-17
3 2015-16
Name: Date, dtype: object
问题内容: 我将时间作为Unix时间戳存储在MySQL数据库中,并将其发送到一些JavaScript代码。我怎么会得到时间呢? 例如,以HH / MM / SS格式。 问题答案: let unix_timestamp = 1549312452 有关Date对象的更多信息,请参考MDN或ECMAScript5规范。
问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。
尝试此获取无效字符串格式问题。谁能帮我一下。
我有以下两个场景共享的前奏代码: 现在,我想将df转换为pyspark数据帧(
我试图找出如何在Kotlin中将转换为,这在Java中非常简单,但我在Kotlin中找不到任何等效的。 例如:历元时间戳(1970-01-01以来的秒数)== 在Kotlin中是否有解决方案,或者我是否必须在Kotln中使用Java语法?请给我一个简单的例子来说明如何解决这个问题。提前谢谢。 这个链接不是我问题的答案
我有一个数据框,其中一列叫做“逐步更新日期”,它包含对象,看起来像: 3月24日表示2024年3月,所以我想知道是否有办法将该列转换为日期,所以3月24日将是2024-03-01(yyyy-mm-dd),只是让它自动成为每月的第1个值它更容易