pandas - 查询带有Period数据类型的数据帧时Jupyter内核崩溃

标签 pandas datetime crash jupyter-notebook

我遇到了一个有趣的问题。我有一个包含三列的数据集,其中的日期以YYYYMM格式存储为整数。首先,我尝试将它们转换为datetime,但是某些日期不在datetime数据类型的1677-09-21下限范围内。所以我像这样使用了变通方法in the documentation:

def conv(x):
    return pd.Period( year=x // 10000, month=x // 100 % 100, day=x % 100, freq='D' )

# First, append '01' to create format YYYYMMDD, then apply conversion function
columns = ['indep_date', 'cow_system_ind_date', 'gw_system_ind_date']
for column in columns:
   icow[column] = ( icow[column].astype('str') + '01' ).astype('int').apply(conv)

这一切都很好。但是,应用此功能后,我将无法通过查询任何列来选择数据框。如果我尝试其中任何一种,Jupyter内核都会崩溃:
icow.query( 'column != 200' )
icow[ icow['col1'] != icow['col2'] ]
icow[ icow['col1'].ne( icow['col2'] ) ]

我尝试了多种其他方法,但是所有方法都会导致崩溃和内核重新启动。有趣的是,如果我只运行内部部分,则运行良好。例如:
icow['col1'] != icow['col2']

正确返回一系列True / False值。一旦包装好以尝试取回数据框的选择,就会崩溃。

如果删除period [D]列(或跳过转换),则查询运行良好。任何人都知道为什么在我的数据帧中具有这些period [D]数据类型会导致此问题,并且我该如何解决?

最佳答案

解决:问题是三个日期列之一包含原始数据集中带有多个-9的条目。有趣的是,将字符串表示形式转换为Period的函数没有失败,但是它以某种方式破坏了数据帧,从而导致对任何列的查询都导致内核崩溃。通过将-9日期设置为远大于0001-01-01的日期,一切正常。

关于pandas - 查询带有Period数据类型的数据帧时Jupyter内核崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019763/

相关文章:

iOS、iPhone、iPad : is slow loading a good strategy to avoid memory crashes?

python - Pandas eval - 在列上调用用户定义的函数

python - 一次删除所选 Pandas 列中的空格

python - Pandas 数据框到元组列表的字典

python - 迭代 Pandas 数据帧,同时跳过第一行

java - 将日期和时间转换为选定的时区

javascript - 如何使用 JSON.NET 通过 ASP.NET MVC 传递 JSON 日期值?

ios - Tableview 在索引路径处的行高度崩溃

windows - 是否可以丢弃 Azure 角色主机并在同一主机上启动它而不进行清理?

python - 在Python中将带有偏移量的奇数时间戳转换为UNIX时间