在groupby上的pandas settingwithcopywarning

时间:2015-06-03 12:48:47

标签: python pandas

虽然我一般都了解警告,而且很多帖子都是这样处理的,但我不明白为什么只有当我到达groupby线(最后一个)时才会收到警告:

grouped = data.groupby(['group'])

for name, group in grouped:
    data2=group.loc[data['B-values'] > 0]
    data2["unique_A-values"]=data2.groupby(["A-values"])["A-values"].transform('count')

编辑: 这是我的数据框(数据):

group    A-values    B-values
human    1           -1
human    1            5
human    1            4
human    3            4
human    2           10
bird     7            8
....

对于B值> 0(data2=group.loc[data['B-values'] > 0]):

人类有两个等于一的A值,一个等于3,一个等于2(data2["unique_A-values"]=data2.groupby(["A-values"])["A-values"].transform('count')

1 个答案:

答案 0 :(得分:1)

您收到错误是因为您引用了您的groupby,然后尝试向其添加一列,所以它只是警告您,如果您打算更新原始df,那么这可能会也可能不起作用。

如果您只是修改本地副本,请使用copy()复制,以便明确显示,警告将消失:

for name, group in grouped:
    data2=group.loc[data['B-values'] > 0].copy() # <- add .copy() here
    data2["unique_A-values"]=data2.groupby(["A-values"])["A-values"].transform('count')