当一个等于'02'的列将定义应用到其他5列时,我有我想要的dataframe。这是我的代码:
mask = (df['A']=='02')
z_valid = df[mask]
df.loc[((mask) & (df['B'] !=0)), 'B'] = z_valid['B'].apply(def)
df.loc[((mask) & (df['C'] !=0)), 'C'] = z_valid['C'].apply(def)
df.loc[((mask) & (df['D'] !=0)), 'D'] = z_valid['D'].apply(def)
df.loc[((mask) & (df['E'] !=0)), 'E'] = z_valid['E'].apply(def)
df.loc[((mask) & (df['F'] !=0)), 'F'] = z_valid['F'].apply(def)
我得到了这个错误:'ValueError:设置时必须具有相等的len键和value
但是当我只在2列上应用def时,这段代码可以工作:
mask = (df['A']=='02')
z_valid = df[mask]
df.loc[((mask) & (df['B'] !=0)), 'B'] = z_valid['B'].apply(def)
df.loc[((mask) & (df['C'] !=0)), 'C'] = z_valid['C'].apply(def)
我如何修复这个错误?先谢谢你。
2条答案
按热度按时间xv8emn3q1#
它引发了一个异常,因为'D'是一个空的
Series
:假设下面的dataframe:
现在,如果我尝试你的代码:
输出:
在'D'上引发异常:
b0zn9rqh2#
如果我理解了需求,你可以像下面的例子一样使用
.where
和.applymap
:其给出: