将新的pandas dataframe列分配给单个值的最简洁方法是什么?

时间:2017-06-12 14:24:15

标签: pandas

使用数据框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"

1 个答案:

答案 0 :(得分:0)

正如@EdChum和@ScottBoston所解释的

因为df是在某些原始数据帧上使用掩码派生的

df = df_original[boolean_mask]

要避免使用两种第一种方法发出警告,请改用df=df_original[boolean_mask].copy()

df.assign不需要此功能,因为它会自动创建原始数据框的副本