【问题标题】:pandas date to string熊猫日期到字符串
【发布时间】:2017-01-27 10:56:24
【问题描述】:

我有一个日期时间pandas.Series。一列称为“日期”。我想像字符串一样在循环中获取“i”元素。

s.apply(lambda x: x.strftime('%Y.%m.%d'))astype(str).tail(1).reset_index()['date'] 或许多其他解决方案都不起作用。

我只想要一个像'2016-09-16'(系列中的第一个日期时间元素)这样的字符串,而不是当前返回的字符串,即:

 ss = series_of_dates.astype(str).tail(1).reset_index()['date']
"lol = %s" % ss 

lol = 0 2016-09-16\nName: date, dtype: object

我只需要:

lol = 2016-09-16

因为我需要

some string % a , b , s ,d

..... 在 a, b,s 中甚至没有 '/n' ...

【问题讨论】:

  • 您可以发布一些示例数据和所需的输出吗?例如print(s.head(10))...的输出...

标签: python datetime pandas time-series


【解决方案1】:

我认为您可以使用strftimedatetime 列转换为string 列:

import pandas as pd

start = pd.to_datetime('2015-02-24 10:00')
rng = pd.date_range(start, periods=10)

df = pd.DataFrame({'dates': rng, 'a': range(10)})  
print (df)
   a               dates
0  0 2015-02-24 10:00:00
1  1 2015-02-25 10:00:00
2  2 2015-02-26 10:00:00
3  3 2015-02-27 10:00:00
4  4 2015-02-28 10:00:00
5  5 2015-03-01 10:00:00
6  6 2015-03-02 10:00:00
7  7 2015-03-03 10:00:00
8  8 2015-03-04 10:00:00
9  9 2015-03-05 10:00:00

s = df.dates
print (s.dt.strftime('%Y.%m.%d'))
0    2015.02.24
1    2015.02.25
2    2015.02.26
3    2015.02.27
4    2015.02.28
5    2015.03.01
6    2015.03.02
7    2015.03.03
8    2015.03.04
9    2015.03.05
Name: dates, dtype: object

循环使用Series.iteritems:

for idx, val in s.dt.strftime('%Y.%m.%d').iteritems():
    print (val)

    2015.02.24
2015.02.25
2015.02.26
2015.02.27
2015.02.28
2015.03.01
2015.03.02
2015.03.03
2015.03.04
2015.03.05

【讨论】:

    【解决方案2】:

    为了提取值,可以试试:

    ss = series_of_dates.astype(str).tail(1).reset_index().loc[0, 'date']
    

    使用loc 会给你内容就好了。

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 2014-02-20
      • 2015-07-19
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 2018-05-26
      • 2018-10-31
      • 2017-05-07
      相关资源
      最近更新 更多