我正在创建一个新的计算列,但是,我想排除某些行,并计算新列的值。然后,为了填充排除行的值,我想用df1.groupby['City']
对数据帧进行子集,并计算平均值以应用回原始数据帧中的new col
df1 = pd.DataFrame({
'City': ['SF','NYC','SF','NYC','SF','CHI','LA','LA','CHI'],
'Val': [2,4,0,0,7,4,3,5,6],
'Val1': [1,1,1,1,1,1,1,1,1]
})
df1['new col'] = np.nan
for name, group in df.groupby(['City']):
# Create Boolean Index
m = group['Val'] != 0
# Calculate rev_per_unit from grouped dataframe `group`
stat = group.loc[m, 'Val'] / group.loc[m, 'Val1']
# Assign stat to `df` at index locations where `Val` is 0 in group
df.loc[group[~m].index, ''] = group['new col'].mean()
预期产出:
df1 = pd.DataFrame({
'City': ['SF','NYC','SF','NYC','SF','CHI','LA','LA','CHI'],
'Val': [2,4,0,0,7,4,3,5,6],
'Val1': [1,1,1,1,1,1,1,1,1],
'new_col: [2,4,4.5,2,7,4,3,5,6]
})
新列是一个df1['Val] / df1['Val1']
的计算列,不包括df['Val'] == 0
,然后我将new_col
作为分组平均值为df['Val'] == 0
的行填充new_col
第一组
new_col
到Val/Val1
:然后使用^{} 计算分组平均值(将0设置为
nan
忽略这些行):最后,使用分组平均值对0个位置进行插补:
或者使用^{} :
或^{} :
或^{} :
总之:
相关问题 更多 >
编程相关推荐