截断列时设置WithCopyWarning

时间:2014-12-21 04:08:19

标签: python pandas truncation

也许有人可以帮助/建议如何修复以下truncateColumn函数,这样我就不会收到警告消息。

我查看了Pandas: SettingWithCopyWarningHow to deal with SettingWithCopyWarning in Pandas?以及其他几个。

基于这些信息,我尝试了几种方法 - arr [col]到arr.loc [col],但仍然给出了警告。我也试过arr.loc [:,col],但这次失败了。

如果有人可以提出更好的列截断功能,那么也会受到欢迎。仅供参考,我有一个非常大的HDF数据集,附加了新的日志。新日志的某些字符串字段可能超过HDF数据集列的maxsize。因此实际上根本问题是将许多日志(随着时间的推移)合并为单个格式。

注意:警告信息有时会发生,但并非在所有情况下都会发生......即。一些日志工作,而其他日志截断发出警告消息。

CODE:

def hdf_truncateColumn(self, col, df, maxsize):
    #-----------------------------------------
    # Truncate bad "column" (col) to min_itemsize - maxsize
    maxsize = int(maxsize)
    try:
        df[col] = df[col].str[0:maxsize]
        # ORIG METHOD
        #temp = df[col]
        #df[col] = temp.apply(lambda x: str(x)[0:maxsize])
    except:
        return False
    return True

我得到的信息是

 func.py:305: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
 Try using .loc[row_index,col_indexer] = value instead
    df[col] = df[col].str[0:maxsize]

0 个答案:

没有答案