Pandas中如何通过其他列取值获取指定列的值并进行运算
你可以通过以下几种方式实现需求,默认你已经取出了outlook对应的频次表存为变量freq_df:
方法1:直接按条件筛选后求和
如果要计算所有outlook为rainy的Time总和,直接用布尔索引筛选后调用sum()方法即可:
total_rainy = freq_df[freq_df['outlook'] == 'rainy']['Time'].sum() # 输出结果为5
如果需要明确指定play的取值分别获取再相加,写法如下:
rainy_yes = freq_df[(freq_df['outlook'] == 'rainy') & (freq_df['play'] == 'yes')]['Time'].values[0] rainy_no = freq_df[(freq_df['outlook'] == 'rainy') & (freq_df['play'] == 'no')]['Time'].values[0] total_rainy = rainy_yes + rainy_no
方法2:按outlook分组预计算总和
如果你需要频繁获取不同outlook对应的总Time,可以提前做一次分组聚合,后续直接取值即可:
outlook_total = freq_df.groupby('outlook')['Time'].sum() # 直接获取rainy对应的总Time total_rainy = outlook_total.loc['rainy'] # 同样可以取其他outlook的总数值,比如outlook_total.loc['sunny']得到5
内容的提问来源于stack exchange,提问作者SergioPD08
相关产品推荐
相关产品推荐

