也许有人可以帮助/建议如何修复以下truncateColumn函数,这样我就不会收到警告消息。
我查看了Pandas: SettingWithCopyWarning和How 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]