我正在使用pandas并将一些数据加载到数据帧中。我想做的是替换数据中除每个组中第一个值外的所有场景频率列。在
我的数据如下:
ExplosionID FireWater FireID Scenario Frequency
111 0 213 4.209055e-15
214 4.209055e-15
215 4.209055e-15
217 4.209055e-15
219 4.209055e-15
220 4.209055e-15
112 0 232 8.388742e-16
233 8.388742e-16
234 8.388742e-16
235 8.388742e-16
237 8.388742e-16
239 8.388742e-16
240 8.388742e-16
我想将scenario frequency列中除第一个值外的所有值替换为0,这样我就得到了:
^{pr2}$前三列(ExplosionI
,FireWater
,FireID
)是多索引中的索引。在
我定义了一个函数:
#function to replace all but first value in group with 0
def replace_all_except_first(group):
group.iloc[1:] = 0
return group
并尝试了以下方法:
data_to_sum = HL_df_subset.groupby(level=0).apply(replace_all_except_first)
其中HL_df_subset
是我的数据帧。但是,这会将所有值与0放在一起。在
我是python新手,我知道我完全误解了groupby的工作原理,但我一直在尝试各种各样的方法,都无法让它正常工作。在
谢谢你的帮助。在
cumcount
:查找顺序。创建一个不等于0
的布尔序列。这意味着,不是第一排mask
:获取真值并屏蔽数据帧的相关部分。在本例中,它使得cumcount不为0的任何地方都是np.nan
。在fillna
:取这些np.nan
,并用零填充考虑
^{pr2}$df
相关问题 更多 >
编程相关推荐