将时间从“ pandas.core.series模块的系列对象”转换为Python中的字符串

时间:2019-04-30 15:30:21

标签: python datetime strftime

我需要使用pandas.read_excel获得使用Python的Excel电子表格的最后一个单元格的值。 该单元格包含一个日期,我需要将其分配给我的Python脚本中的变量。格式为2018-10-15 21:20:00。

我需要将此日期转换为不带时间部分的字符串,因此在此示例中,我只需要2018-10-15。

我尝试过:

pd.read_excel('spreadsheet.xlsx')['column1'][-1:].astype('datetime64[D]')

但是当我使用.values()提取它的值时,我得到了'numpy.ndarray'对象不可调用。

我也尝试过:

pd.read_excel('spreadsheet.xlsx')['column1'][-1:].strftime('%Y-%m-%d') 

但是我得到“系列对象没有属性strftime”。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

第一个pd.DataFrame.values是属性而不是方法,因此它是不可调用的,
然后,将字符串转换为时间序列的最简单方法是使用pd.to_datetime函数,为什么要在您的情况下添加格式参数

series= pd.read_excel('spreadsheet.xlsx')['column1'][-1:]
series= pd.to_datetime(series.apply(lamba x: x[:10]), format='%Y-%m-%d')

请注意,lambda函数仅允许您保留字符串内容的前10个字母,
这是一个非常好的文档https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html

答案 1 :(得分:0)

如果仅需要时间戳中的日期,如下面的b的值,请首先确保该系列的dtype是datetime对象,然后使用dt.date仅提取日期:

In [24]: df = pd.DataFrame({'a':[1,2,3], 'b':['2018-10-16 22:20:00', '2018-10-15 18:20:00','2018-10-18 21:20:00']})

In [25]: df
Out[25]:
   a                    b
0  1  2018-10-16 22:20:00
1  2  2018-10-15 18:20:00
2  3  2018-10-18 21:20:00

In [26]: df['b'] = pd.to_datetime(df['b'])

In [27]: df
Out[27]:
   a                   b
0  1 2018-10-16 22:20:00
1  2 2018-10-15 18:20:00
2  3 2018-10-18 21:20:00

In [28]: df['b'].dtype
Out[28]: dtype('<M8[ns]')

In [33]: df['date'] = df['b'].dt.date

In [34]: df
Out[34]:
   a                   b        date
0  1 2018-10-16 22:20:00  2018-10-16
1  2 2018-10-15 18:20:00  2018-10-15
2  3 2018-10-18 21:20:00  2018-10-18