gpt4 book ai didi

python - 为列的上半部分和下半部分设置数学运算

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:24 26 4
gpt4 key购买 nike

我相信我的问题真的很简单,一定有一个非常简单的方法来解决这个问题,但是由于我对 Python 很陌生,尤其是 pandas,我无法自己解决。

我制作了以下数据框,它代表了我一直在做的事情的一种更简单的场景。所以,请考虑以下 df:

import pandas as pd

data = {'Column A': [300,300,450,500,500,750,600,300, 150],
'Column B': [1,1,2,2,3,3,0,2,3],
'Column C': ["Value_1", "Value_2", "Value_3", "Value_4", "Value_1",
"Value_2", "Value_3", "Value_4", "Value_5"]}
df = pd.DataFrame(data, columns=['Column A','Column B', 'Column C'])

返回以下内容:

         A          B    C  
0 300 1 Value_1
1 300 1 Value_2
2 450 2 Value_3
3 500 2 Value_4
4 500 3 Value_1
5 750 3 Value_2
6 600 0 Value_3
7 300 2 Value_4
8 150 3 Value_5

我的目标是利用匿名函数——也许还有其他方法可以在没有匿名函数的情况下解决这个问题,但是对于我面临的更复杂的情况,别无选择——它将采用 A 列并提取下部均值减去上部均值的绝对值。也就是说,将列分成两部分,计算每部分的平均值,然后返回绝对值。我正在为多个数据帧运行一个 for 循环,我想将该结果存储在另一个数据帧中,因此这就是为什么我正在寻找涉及匿名函数的解决方案。

对于这种特定情况,我想应用的数学函数基本上是:

y = np.absolute((300 + 300 + 450 + 500 + 500)/5 - (750 + 600 + 300 + 150 )/4)

或者

y = np.absolute((300 + 300 + 450 + 500)/4 - (500 + 750 + 600 + 300 + 150 )/5)

取决于您设置下限/上限的位置。

希望我能做到简洁和准确。非常感谢您在这方面的帮助!

最佳答案

这是一个矢量化和广义化的函数,将您的数据框分成两部分并减去它们的均值。

numpypandas 使用的函数:

  • np.ceil
  • DataFrame.shape
  • DataFrame.head
  • DataFrame.tail
  • Series.mean
def mean_upper_and_lower(df, val_column):

n_top = int(np.ceil(df.shape[0] / 2))
n_bottom = int(df.shape[0] - n_top)

mean_top = df.head(n_top)[val_column].mean()
mean_bottom = df.tail(n_bottom)[val_column].mean()

return abs(mean_top - mean_bottom)

输出

mean_upper_and_lower(df, 'Column A')

40.0

关于python - 为列的上半部分和下半部分设置数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57867976/

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