2017-09-05 32 views
0

我有一个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任何想法?

+0

你能分享一个Excel文件的片段 - 理想的是列标题和第一行数据。如果数据是私人的,那么只需要标题行就可以。 –

+0

(评论的原因是要复制,但也要检查“转换器”定义是否正确定义)。 –

回答

2

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

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

2

这个问题可能与excel有关。确保整个列以文本形式存储,而不仅仅是您正在讨论的奇异值。如果excel在任何时候都将该列保存为数据,则无论显示什么内容或数据类型是否更改,它都将在该单元中存储一年。熊猫将读取整个列作为一种数据类型,所以如果您的日期高于9-3,它将被转换。将日期更改为没有年份的字符串可能会很棘手。将Excel表格保存为您喜欢的适当格式后再保存为csv会更好,然后使用pandas pd.read_csv()。我做了一个试验Excel工作簿 “book1.xlsx”

9-3 1 Hello 
12-1 2 World 
1-8 3 Test 

然后跑

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

和回来我的数据帧正确。因此,我被认为是优秀的。对不起,这不是最好的答案,但我不相信这是一个熊猫错误。