首页 > 解决方案 > 如何对分组数据集执行操作并替换原始df中的相应值?

问题描述

对于给定的数据帧,我需要对数据进行分组(通过 groupby)并对分组数据执行操作(例如:grouped_data - 100)。在此之后,我需要用我刚刚计算的新值替换数据框中的旧值。

我尝试将获得的值分配给分组数据框,但它似乎不起作用。

分组数据框

       altitude_feet    Column_irrelevant_A     Column_irrelevant_B     
     1889.155095                NaN                    NaN
     1889.155095                NaN                    NaN           
     1889.155095                NaN                    NaN
     1889.155095                NaN                    NaN
     1889.155095                NaN                    NaN
     1889.155095                NaN                    NaN

    new_values= (df.groupby('columnA').get_group(101)['altitude_feet'])-100
    df.groupby('coulmnA').get_group(101)['altitude_feet'] = new_values

我希望从上面减去 100 英尺,并将其作为新的高度英尺存储在初始数据帧中,然后再进行分组

我预计海拔高度约为 1789

我也考虑过避免分组,而是简单地找到索引

data[data['columnA']==101].assign(...)

任何建议,将不胜感激。

标签: pythonpandasdataframe

解决方案


只需定义一个函数并使用 apply()。我使用了 seaborn 的示例数据集:

import pandas as pd
import numpy as np
import seaborn as sns

df=sns.load_dataset('iris')
def f(grp):
    dfx=grp.copy()
    dfx['new_sepal_length']=dfx.sepal_length-100
    return dfx

df_new=df.groupby('species').apply(f).reset_index(drop=True)

我创建了新的数据框 df_new 而不是 df,因此您可以将 df 与 df_new 进行比较。


推荐阅读