Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 将日期/时间戳格式从Excel对象数据类型更改为数据帧(字符串)_Python_Excel_Pandas - Fatal编程技术网

Python 将日期/时间戳格式从Excel对象数据类型更改为数据帧(字符串)

Python 将日期/时间戳格式从Excel对象数据类型更改为数据帧(字符串),python,excel,pandas,Python,Excel,Pandas,因此,我设法从Excel中提取了一个特定的单元格,但现在我得到了以下结果: 2020-01-30T00:00:00.000000000 我使用拆分函数删除了“T”后面的字符: d1 = d.str.split("T",n=1, expand=True)[0] 结果是: 2020-01-30 我的问题是如何将日期格式更改为dd/mm/yyyy 我知道strftime函数,但是我没有从中得到结果。错误总是显示序列没有序列属性或日期。datetime不是字符串的属性 以下是工作代码: imp

因此,我设法从Excel中提取了一个特定的单元格,但现在我得到了以下结果:

2020-01-30T00:00:00.000000000

我使用拆分函数删除了“T”后面的字符:

d1 = d.str.split("T",n=1, expand=True)[0]
结果是: 2020-01-30

我的问题是如何将日期格式更改为dd/mm/yyyy

我知道strftime函数,但是我没有从中得到结果。错误总是显示序列没有序列属性或日期。datetime不是字符串的属性

以下是工作代码:

    import pandas as pd 
    import datetime

    df = pd.read_csv('test1.xlsx',
    #header=None,
    #names = headers,
    dtype = dtypes,
    parse_dates = pdate, 
    date_parser=None) 


    d = df['AA']
    d1 = d.str.split("T",n=1, expand=True)[0]
    d2 = d1[0]

    print(d2)

              AA  Num
    0 2020-01-01    5
    1 2020-02-01   10
    2 2020-03-01   15
    3 2020-04-01   20
    4 2020-05-01   25
第一个想法是使用:

如果需要删除
T
之后的值,您的解决方案应更改为:

df['AA'] = pd.to_datetime(df['AA'].str.split("T").str[0])

我已使用您的示例创建了一个数据帧,以下是答案:

import pandas as pd
from datetime import datetime
然后我创建了数据帧

data = {'date': ['2020-01-01T00:00:00.000000000','2020-02-01T00:00:00.000000000','2020-03-01T00:00:00.000000000','2020-04-01T00:00:00.000000000','2020-05-01T00:00:00.000000000'],
        'num':[5, 10, 15, 20, 25]
       }
df = pd.DataFrame(data, columns = ['date', 'num'])
现在,答案是:

df['date'] = pd.to_datetime(df['date']).dt.strftime('%d/%m/%Y')
要显示四位数年份,您需要通过大写字母“Y”。您需要使用dt.strftime来工作

       date     num
0   01/01/2020  5
1   01/02/2020  10
2   01/03/2020  15
3   01/04/2020  20
4   01/05/2020  25
如果要更改日期列的格式,可以使用以下代码行

df['date'].astype(str)

这会将整个列转换为对象。

您好,但是如果数据太长,是否可以创建df而不在“data”变量中列出所有内容?我创建的这个“data”字典作为示例显示并将其转换为dataframe,您已经将xslx文件读取为dataframe了。您不需要创建数据变量。您可以从答案部分继续。但是在拆分“T”之前的字符串后,日期结构保持不变。我希望它是“%d/%m/%Y”@SyahmiShaarani-不明白,
2020-01-01
格式错误?我已将字符串拆分为那样。现在,我希望这一年是最后一年,而不是最前面一年。它必须是'01-01-2020',而不是2020-01-01'@SyahmiShaarani-好的,所以使用
df['AA']=pd.to_datetime(df['AA'].str.split(“T”).str[0]).dt strftime('%d-%m-%Y')
-但它是字符串,而不是字符串datetimes@SyahmiShaarani-如果需要datetimes,则无法自定义格式,则datetimes始终采用python
YYYY-MM-DD
格式
df['date'].astype(str)