我需要使用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”。
谢谢您的帮助。
答案 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