Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python到_datetime(从int/float到3列)_Python_Pandas_Date_Datetime - Fatal编程技术网

Python到_datetime(从int/float到3列)

Python到_datetime(从int/float到3列),python,pandas,date,datetime,Python,Pandas,Date,Datetime,我的数据集中有3列:年(int)、月(int)、日(float)。 我想用to_datetime创建一个日期列 链接到示例数据的图片: 链接到整个数据集: 我试图将这3列转换为3个int或3个字符串,但总是出现相同的错误-day超出范围 我的问题是: 1) 我应该使用什么列格式才能使用_datimetime-int或string 2) 我可以或者如何从3列中创建一个日期,并使用to_datetime?还是我必须先把这三列列连接起来 3) 我如何才能消除这一“天超出范围的问题”? 我问过谷歌博士,

我的数据集中有3列:年(int)、月(int)、日(float)。 我想用to_datetime创建一个日期列

链接到示例数据的图片:

链接到整个数据集:

我试图将这3列转换为3个int或3个字符串,但总是出现相同的错误-day超出范围

我的问题是:

1) 我应该使用什么列格式才能使用_datimetime-int或string

2) 我可以或者如何从3列中创建一个日期,并使用to_datetime?还是我必须先把这三列列连接起来

3) 我如何才能消除这一“天超出范围的问题”? 我问过谷歌博士,但没有一个解决方案对我有效

data['td'] = pd.to_datetime(data['year'])

data['tm2'] = td + timedelta(days=1)
如何将月和日列添加到第一行

  • int和str都可以,您只需更改Day列的float类型。不管怎么说,这是不现实的,我们在日期上不分天数

  • date\u series=pd.to\u datetime(df)
    将为您提供日期时间序列,然后您可以将其附加到初始数据帧中

  • 测试代码:

    import numpy as np
    import pandas as pd
    
    data = pd.DataFrame(columns=['Year', 'Month', 'Day'])
    data = data.append({'Year': 2019, 'Month': 10, 'Day': 20}, ignore_index=True)
    date_series = pd.to_datetime(data)
    data['Date'] = date_series
    
    数据的输出

        Year    Month   Day Date
    0   2019    10      20  2019-10-20 
    
    编辑

    import numpy as np
    import pandas as pd
    
    data = pd.DataFrame(columns=['Year', 'Month', 'Day', 'Gender', 'No. of Births'])
    data = data.append({'Year': 2019, 'Month': 10, 'Day': 20, 'Gender': 'M', 'No. of Births': 5}, ignore_index=True)
    
    date_prep = data.iloc[:, 0:3]
    date_series = pd.to_datetime(date_prep)
    data['Date'] = date_series
    
    

    所以顺序是:1)将float更改为int 2)使用代码创建日期时间序列3)将此序列附加到我的数据帧?它将从我的3列中创建日期,年/月/日?我该怎么做?对。基本上,在这里用实际数据代替我的虚拟变量就可以了。除非dataframe中有其他列,否则可以通过索引指定要转换为datetime的列。如果你能为你的数据添加一个样本,它可能会帮助我给你一个更详细的答案。我的数据集中总共有5列(year-int,month-int,day-float,gender-str,number of birth-int)。我对第三点有问题-如何用另外两列将dateseries附加到现有数据集中?@Ela请参见上面的编辑。基本上,您将把三个y/m/d列分离成一个子集,从中创建一个日期时间序列并附加它(最后一行正好如此)。首先,我非常感谢您的帮助。其次,我不知道我是否做错了什么,或者问题出在哪里——您的代码可以工作,但它只创建了一个新行,并且我看不到原始数据集中的数据。有一个新的日期列,但没有我的数据集。我做错了什么?