<p>熊猫的行为很有道理:</p>
<ul>
<li>如果日期列的excel格式是文本,pandas将读取
默认情况下,日期为字符串。在</li>
<li>如果日期列的excel格式是date,pandas将把日期读作日期。在</li>
</ul>
<p>但是,您需要指出,在Excelfile中,date列的格式是日期。如果是这样的话,那么Excelfile中没有字符串可以开始。date列的底层数据存储为float。您看到的字符串不是实际数据。如果不是字符串,则不能将其作为原始字符串读取。在</p>
<p>更多信息:<a href="https://xlrd.readthedocs.io/en/latest/formatting.html" rel="nofollow noreferrer">https://xlrd.readthedocs.io/en/latest/formatting.html</a></p>
<p>但是,假设出于某种原因,您希望Python显示与Excel相同的格式,但是是字符串形式,而不需要查看Excel。在</p>
<p>首先你必须找到格式:</p>
<pre><code>from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.worksheets[0]
print(ws.cell(1,5).number_format) # look at the cell you are interested in
> '[$]dd/mm/yyyy;@'
</code></pre>
<p>然后转换为strftime函数可以理解的内容。
<a href="https://www.programiz.com/python-programming/datetime/strftime#format-code" rel="nofollow noreferrer">https://www.programiz.com/python-programming/datetime/strftime#format-code</a></p>
^{2}$
<p>然后应用它</p>
<pre><code>df.loc[:,"date_field"].apply(lambda x: x.strftime(form))
> 0 01/02/2018
1 02/02/2018
2 03/02/2018
3 04/02/2018
4 05/02/2018
</code></pre>
<p>但是,如果您使用多种Excel日期格式,则必须为每种格式制作一个strf时间映射。在</p>
<p>可能会有更实际的方法来做到这一点,比如接收csv格式的数据,或者只是将日期保存在excel的文本格式中。在</p>