【问题标题】:Error when using Pandas to read dates from Excel file and sort them使用 Pandas 从 Excel 文件中读取日期并对其进行排序时出错
【发布时间】:2020-05-27 09:55:50
【问题描述】:

我正在读取一个带有 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

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

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

希望其他人之前遇到过这种情况。有没有办法使用 Pandas 正确读取带有反引号的日期?

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

【问题讨论】:

标签: python excel python-3.x pandas


【解决方案1】:

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

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

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

【讨论】:

  • 太棒了!这对 Date 进行了正确排序,使用 pdDate 进行排序。很有创意,感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2022-10-13
  • 1970-01-01
  • 2015-12-27
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多