我有一个excel文件,在列Model
的那一行中有一个值"9-3“,它是一个字符串值。我仔细检查了excel文件,以使列数据类型为Plain string而不是Date。但是,当我使用read_excel并将其转换为数据框时,值显示为2017-09-03 00:00:00,而不是字符串"9-3“。下面是我读取excel文件的方法:
table = pd.read_excel('ManualProfitAdjustmentUpdates.xlsx' , header=0, converters={'Model': str})
你知道为什么即使我把转换器设置为str,pandas也不把值当作字符串吗?
发布于 2017-09-05 22:56:40
Excel文件中的普通字符串设置仅影响数据在excel中的显示方式。转换器中的str设置只影响它处理所获取的数据的方式。
若要强制excel文件以字符串形式返回数据,单元格的第一个字符应为撇号。将"9-3“改为”9-3“。
发布于 2017-09-05 23:05:02
问题可能出在excel上。确保将整个列存储为文本,而不仅仅是您正在讨论的单一值。如果excel在任何时候将列另存为数据,它将在该单元格中存储一年,无论显示的是什么或数据类型发生了什么变化。Pandas将整个列作为一种数据类型读取,因此如果日期大于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)
并正确地取回了我的数据帧。因此,我相信它是优秀的。对不起,这不是最好的答案,但我不认为这是一个错误。
https://stackoverflow.com/questions/46057285
复制相似问题