gpt4 book ai didi

python - Pandas,对行中所有三个值都可用的元素求和

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:02 25 4
gpt4 key购买 nike

假设我有一个像这样的数据框:

Country   Year    Orange  Apple Plump
US 2008 17 29 19
US 2009 11 12 16
US 2010 14 16 38
Spain 2008 11 NULL 33
Spain 2009 12 19 17
France 2008 17 19 21
France 2009 19 22 13
France 2010 12 11 15
Italy 2009 NULL NULL PRIVATE
Italy 2010 15 16 17
Italy 2011 42 NULL PRIVATE

首先,我想获取行的平均值,但我只想考虑所有橙色、苹果、丰满信息可用的行

其次,如果至少只有一个水果信息可用,我会尝试获取不同水果之间的最大差异(例如,2008 年美国的差异为 12)。例如,2011 年意大利将为 42

第三,我想对拥有 2008 年至 2010 年所有年份信息的国家重复同样的操作。任何帮助将不胜感激

最佳答案

首先需要清理数据、转换为正确的类型并根据需要填充任何空值。 在这个例子中,我们不需要任何填充

对于 ['Apple', 'Orange', 'Plump'] 中的 col: df[col] = pd.to_numeric(df[col], '强制')

pandas.to_numeric 的第二个参数函数定义如何处理错误值。

然后我们可以逐行应用函数来实现所需的结果。

该函数应接受以数据帧的列名称作为键的系列,应用逻辑并返回一个元组,该元组形成附加列。

df[['fruitmean', 'fruitdiff']] = df.apply(myfunc, axis=1)

我们定义myfunc如下:

def myfunc(x):
vals = pd.Series([x.Apple, x.Orange, x.Plump])
valfilled = vals.fillna(0)
nulls = vals.isnull().sum()
fruitmean = vals.mean() if nulls == 0 else np.nan
fruitdiff = valfilled.max() - valfilled.min() if nulls < len(vals) else np.nan
return pd.Series([fruitmean, fruitdiff])

关于python - Pandas,对行中所有三个值都可用的元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com