使用熊猫从Excel文件中读取日期并对日期进行排序时出错

时间:2020-02-11 22:18:15

标签: python excel python-3.x pandas

我正在使用Pandas读取一个Excel文件,其中包含TitleDate列。当我手动设置这样的测试版本时:

import pandas as pd

df = pd.DataFrame(data={'Title': ['Movie1', 'Movie2', 'Movie3', 'Movie4'],
                    'Date': ['1991-11', '1991', '1991', '1991-10-31']})
print(df)

它可以按预期打印,最重要的是,我可以使用print(df.sort_values('Date'))对其进行精确排序,以下是我最终尝试实现的输出。如您所见,存在YYYY / MM / DD,YYYY / MM和仅YYYY的实例。

Title        Date
1  Movie2        1991
2  Movie3        1991
3  Movie4  1991-10-31
0  Movie1     1991-11

当我尝试使用print(df.sort_values('Date'))对正在读取的实际Excel文件运行read_excel时,会出现我的问题。我得到TypeError: '<' not supported between instances of 'int' and 'str'

我将范围缩小到如何在Excel文件中输入YYYY-MM和YYYY-MM-DD日期。如果我只用YYYY日期运行它,则它可以正确排序。为了正确显示YYYY-MM和YYYY-MM-DD日期,在Excel文件中,我必须在它们前面加一个反勾号。也许这就是导致问题的原因。

希望以前有人遇到过这种情况。是否可以使用Pandas正确读取带有前导引号的日期?

或者,是否有更好的方法将日期输入到Excel文件中以便与Pandas一起使用? (这可能和一个熊猫问题一样,是一个Excel问题)。

1 个答案:

答案 0 :(得分:1)

要解决类型错误,您可以将“日期”列中的整数转换为字符串。这样可以确保将日期解析为字符串。

df['Date'] = df['Date'].astype('str')
df['pdDate'] = pd.to_datetime(df['Date'])
df.sort_values('pdDate')

然后创建一个新列,并将日期转换为datetime并对值进行排序。 “日期”列将保留与excel中相同的格式,并且日期将正确排序。如果将它们排序为字符串,可能会出现错误,但是仍然可以对它们进行排序。

相关问题