Function 熊猫:整列用作已修改的输入

Function 熊猫:整列用作已修改的输入,function,pandas,Function,Pandas,我有一个小函数,在pandas中的一列上执行nan值的求和。这个函数有点复杂,因为我想在从nan单元格切换到非nan单元格时重置值 例:[1,1,nan,nan,2,nan,nan,3.]给出了[0,0,1,2,0,1,2,0.] 不管怎么说,该函数正在工作,现在是: def count_nan_reset(v): vm = v.copy() vm = v.as_matrix() vm[~np.isnan(vm)] = 2 # arbitraire vm[np.isnan(vm)] = 1 vm

我有一个小函数,在pandas中的一列上执行nan值的求和。这个函数有点复杂,因为我想在从nan单元格切换到非nan单元格时重置值

例:[1,1,nan,nan,2,nan,nan,3.]给出了[0,0,1,2,0,1,2,0.]

不管怎么说,该函数正在工作,现在是:

def count_nan_reset(v):
vm = v.copy()
vm = v.as_matrix()
vm[~np.isnan(vm)] = 2 # arbitraire
vm[np.isnan(vm)] = 1
vm[vm==2] = np.nan
n = np.isnan(vm)
a = ~n
c = np.cumsum(a)
d = np.diff(np.concatenate(([0.], c[n])))
vm[n] = -d
fin = np.cumsum(vm)
return fin
我遇到的问题是,当我尝试将此函数作为输入应用于列时,它会更改列本身(就像inplace=True选项所做的那样)

例如:

d = {'Values_for_trial' : pd.Series([1., 1., np.nan, np.nan, 2., np.nan, np.nan, 3.])}
df = pd.DataFrame(d)
df["results"] = count_nan_reset(df["Values_for_trial"])
它改变了df内的值[“values\u for\u trial”]


我真的不知道为什么如果有人能帮上忙,非常感谢

因为vm不是副本

你需要改变

def count_nan_reset(v):
    vm = v.copy()
    vm = v.as_matrix()


因为vm不是副本

你需要改变

def count_nan_reset(v):
    vm = v.copy()
    vm = v.as_matrix()


哇,这件事让我发疯了,太谢谢你了,它真管用哇,这件事让我发疯了,太谢谢你了,它真管用