Python 通过append–;在pandas.HDFStore中增量存储可变长度字符串;最佳方法?

Python 通过append–;在pandas.HDFStore中增量存储可变长度字符串;最佳方法?,python,pandas,pytables,hdfstore,Python,Pandas,Pytables,Hdfstore,(参考古老但相关的问题:) 若一个人事先不知道某些要持久化的字符串在某一点会持续多长时间;在这种情况下,最好的存储方法是什么 使用pd.HDFStore(…).append(…)迭代追加,并捕获待追加数据帧中的字符串长度超过列宽时发生的ValueError。如果出现这种错误,请删除整个表,将新数据追加到RAM中,然后再次保留整个表 预先设置足够的列宽。实现这一点的方法似乎是在第一个append/put中包含minu itemsize。但我的问题是,它迫使我将这些列设置为数据列,从而降低了系统的效

(参考古老但相关的问题:)

若一个人事先不知道某些要持久化的字符串在某一点会持续多长时间;在这种情况下,最好的存储方法是什么

  • 使用pd.HDFStore(…).append(…)迭代追加,并捕获待追加数据帧中的字符串长度超过列宽时发生的ValueError。如果出现这种错误,请删除整个表,将新数据追加到RAM中,然后再次保留整个表
  • 预先设置足够的列宽。实现这一点的方法似乎是在第一个append/put中包含minu itemsize。但我的问题是,它迫使我将这些列设置为数据列,从而降低了系统的效率。(请参阅:)另一种方法(我有人建议)是使用一个伪条目初始化表,该条目包含您认为合理长度的字符串
  • 你觉得哪种选择更合理?这两种方式对我来说都不太理想。我错过什么了吗?(如果这与首选解决方案有关:在我的设置中,要追加的数据框通常只包含一行。该表约有50列,大部分包含字符串。)

    def append_sth(df: pd.DataFrame):
        try:
            s.append("some_key", df, format="table")
        except ValueError:
            whole_df = s.get("some_key")
            s.remove("some_key")
            whole_df = whole_df.append(df)
            s.put("some_key", whole_df, format="table")