Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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 日期时间strftime格式_Python_Datetime_Pandas_Strftime - Fatal编程技术网

Python 日期时间strftime格式

Python 日期时间strftime格式,python,datetime,pandas,strftime,Python,Datetime,Pandas,Strftime,我将数据框中的日期列作为字符串,以便在将其写入excel时去掉时间元素。由于某些原因,我似乎无法按照我需要的格式(2016年2月10日)填写日期。我可以将其以这种格式显示(2016年2月10日),但出现了两个问题-我需要日期为一位数,而不是两位数,并且不符合日期顺序(似乎是按月份排序,而不是按月份排序) 这是我的密码: df8 = df.set_index('DATE').resample('W-WED').apply(pd.DataFrame.tail, n=1) df8.index= df8

我将数据框中的日期列作为字符串,以便在将其写入excel时去掉时间元素。由于某些原因,我似乎无法按照我需要的格式(2016年2月10日)填写日期。我可以将其以这种格式显示(2016年2月10日),但出现了两个问题-我需要日期为一位数,而不是两位数,并且不符合日期顺序(似乎是按月份排序,而不是按月份排序)

这是我的密码:

df8 = df.set_index('DATE').resample('W-WED').apply(pd.DataFrame.tail, n=1)
df8.index= df8.index.droplevel(0)
df8 = df8.reset_index('DATE', drop=False)
df8['DATE'] = pd.to_datetime(df8['DATE']).apply(lambda x:x.date().strftime('%m/%d/%Y'))
示例数据(这是使用上述格式显示的数据)

从中,您可以使用

Code      Meaning                                            Example
%m        Month as a zero-padded decimal number.             09
%-m       Month as a decimal number. (Platform specific)     9
因此,使用
%-m
代替
%m

您可以使用
%d
代替指令,该指令自动丢弃前导零,以给出所需的格式化日期字符串,如图所示:

pd.to_datetime(df8['DATE']).map(lambda x: '{}/{}/{}'.format(x.month, x.day, x.year))
演示:


根据添加的样本数据进行编辑:

为了使它只影响天而不影响月,我们必须使用宽度参数等于2的0来填充/填充包含
.month
属性的字符串的左侧,这样一位数的月份将保留0填充,两位数的月份将保持不变

>>> pd.to_datetime(df['DATE']).map(lambda x: '{}/{}/{}'.format(str(x.month).zfill(2), x.day, x.year))
0    01/2/2013
1    01/4/2012
2    01/5/2011
3    01/6/2016
4    01/7/2015
5    01/8/2014
Name: DATE, dtype: object

您需要发布一些示例数据来帮助我们。@Ted Petrou-我在上面进行了编辑,以便添加一些上面代码打印的示例数据。同样,我正在寻找打印日期为2013年2月1日、2012年4月1日、2011年5月1日等。它似乎也不再按日期顺序打印,而是按月份、日期和年份顺序打印。如果我没记错的话,这在Windows上不起作用。@ayhan解释了“特定于平台”的备注。太糟糕了。我还是会把它留在这里待会儿用。非窗口,users@Mathias711-是的,我对此感到厌倦,但它不起作用,我正在使用windows。这非常有帮助,对我来说是一次很好的学习经历,非常感谢。唯一的问题,我仍然是我需要的日期列是为了从最早的日期到最晚的日期。例如:2011年5月1日、2012年4月1日、2013年2月1日。。等等,我们能做什么?不客气!如果要对日期字符串进行排序,最好先使用
pd.to\u datetime
object
日期列转换为
datetime
。根据此列对
DF
进行排序,如
DF.Sort_值(按=['DATE'],inplace=True)
。现在,您的
DF
是按日期升序排列的。在这之后,只需使用我的答案中提供的语法,但这次不使用
to_datetime
部分,因为它们已经在
datetime64
类型中。让我知道接下来会发生什么。
df = pd.DataFrame(dict(date=['2016/10/02', '2016/10/03', 
                             '2016/10/04', '2016/10/05', '2016/10/06']))

>>> pd.to_datetime(df['date']).map(lambda x: '{}/{}/{}'.format(x.month, x.day, x.year))
0    10/2/2016
1    10/3/2016
2    10/4/2016
3    10/5/2016
4    10/6/2016
Name: date, dtype: object
>>> pd.to_datetime(df['DATE']).map(lambda x: '{}/{}/{}'.format(str(x.month).zfill(2), x.day, x.year))
0    01/2/2013
1    01/4/2012
2    01/5/2011
3    01/6/2016
4    01/7/2015
5    01/8/2014
Name: DATE, dtype: object