Python 列值被读取为日期,而不是字符串-日期

Python 列值被读取为日期,而不是字符串-日期,python,pandas,Python,Pandas,我有一个excel文件,在Model列的一行中有一个值“9-3”,它是一个字符串值。我仔细检查了excel文件,将列数据类型设置为纯字符串,而不是日期。但当我使用read_excel并将其转换为数据框时,值显示为2017-09-03 00:00:00,而不是字符串“9-3”。 以下是我如何读取excel文件: table = pd.read_excel('ManualProfitAdjustmentUpdates.xlsx' , header=0, converters={'Model':

我有一个excel文件,在
Model
列的一行中有一个值“9-3”,它是一个字符串值。我仔细检查了excel文件,将列数据类型设置为纯字符串,而不是日期。但当我使用read_excel并将其转换为数据框时,值显示为2017-09-03 00:00:00,而不是字符串“9-3”。 以下是我如何读取excel文件:

  table = pd.read_excel('ManualProfitAdjustmentUpdates.xlsx' , header=0, converters={'Model': str})

知道为什么即使我将转换器设置为str,pandas也不将值视为字符串吗?

excel文件中的纯字符串设置仅影响数据在excel中的显示方式。 转换器中的str设置仅影响它如何处理所获取的数据

要强制excel文件以字符串形式返回数据,单元格的第一个字符应为撇号。
将“9-3”更改为“9-3”。

excel文件中的纯字符串设置仅影响数据在excel中的显示方式。 转换器中的str设置仅影响它如何处理所获取的数据

要强制excel文件以字符串形式返回数据,单元格的第一个字符应为撇号。
将“9-3”更改为“9-3”。

问题可能出在excel上。确保整个列存储为文本,而不仅仅是您所说的单数值。如果excel在任何时候将该列保存为数据,则无论显示什么或数据类型发生更改,它都会在该单元格中存储一年。Pandas将把整个列作为一个数据类型读取,因此如果您的日期超过9-3,它将被转换。将日期更改为不带年份的字符串可能很棘手。如果excel工作表的格式正确,最好将其保存为csv,然后使用pandas pd.read_csv()。我做了一个excel工作簿“book1.xlsx”的测试

然后跑

import pandas as pd
df = pd.read_excel('book1.xlsx',header=0)
print(df)

并正确地恢复了我的数据帧。因此,我相信它是卓越的。抱歉不是最好的答案,但我不认为这是一个错误

问题可能出在excel上。确保整个列存储为文本,而不仅仅是您所说的单数值。如果excel在任何时候将该列保存为数据,则无论显示什么或数据类型发生更改,它都会在该单元格中存储一年。Pandas将把整个列作为一个数据类型读取,因此如果您的日期超过9-3,它将被转换。将日期更改为不带年份的字符串可能很棘手。如果excel工作表的格式正确,最好将其保存为csv,然后使用pandas pd.read_csv()。我做了一个excel工作簿“book1.xlsx”的测试

然后跑

import pandas as pd
df = pd.read_excel('book1.xlsx',header=0)
print(df)

并正确地恢复了我的数据帧。因此,我相信它是卓越的。抱歉不是最好的答案,但我不认为这是一个错误

您是否可以共享Excel文件的一个片段—理想情况下是列标题和第一行数据。如果数据是私有的,那么只有标题行就可以了。(注释的原因是为了复制,但也是为了检查“转换器”定义是否定义正确)。您是否可以共享Excel文件的一个片段,最好是列标题和第一行数据。如果数据是私有的,那么只有标题行就可以了(注释的原因是为了复制,但也是为了检查“转换器”定义是否定义正确)。