使用数据框df
我想创建一个新列A
并将其分配给单个值(在我的情况下为字符串)
df['A'] = value
发出警告并建议使用loc
但是下面的解决方案仍然给出了相同的警告:
df.loc[:,'A']=value
做了一些研究我发现下面的解决方案没有产生警告:
df=df.assign(A =value)
是创建新列并将其分配给值的一般接受方式吗?使用loc还有其他可能吗?
pandas version' 0.20.1'
编辑:这是为第一个方法
获得的警告信息"A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead"
答案 0 :(得分:0)
正如@EdChum和@ScottBoston所解释的
因为df是在某些原始数据帧上使用掩码派生的
df = df_original[boolean_mask]
要避免使用两种第一种方法发出警告,请改用df=df_original[boolean_mask].copy()
df.assign
不需要此功能,因为它会自动创建原始数据框的副本