当前位置: 首页 > 知识库问答 >
问题:

将时间戳转换为数据帧中的str值

姜正初
2023-03-14

我有这样的数据框

    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”进行比较

我得到这个错误的任何建议,好心

共有3个答案

管峻
2023-03-14

显然,您没有将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'])

希望这会有帮助。

苏硕
2023-03-14

使用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'])
郗俊能
2023-03-14

如有必要,您需要将列转换为_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个值它更容易