熊猫数据框-如何创建条件和,条件取决于数据框中的另一列

卡扎789

我正在尝试创建一个列,该列是Pandas中的条件累积总和。我知道如何在Excel中轻松地做到这一点,但我确实在努力找出如何在Pandas中实现这一目标。考虑以下数据框

df:

    Year    Income
0   2001    17
1   2001    4
1   2001    9
2   2002    6
2   2002    1
2   2002    1
3   2003    12
3   2003    11
3   2003    5

我想向数据框添加一个新列。新列应包含以下所有收入的总和:

  1. “ Year”的值与我们正在计算的行的“ Year”的值相同
  2. 对于正在计算的该行,“收入”的值小于或等于“收入”值

因此输出如下所示:

df:

    Year    Income  Cum_Income
0   2001    17      13          # 2 values less than 17 in 2001: 4 + 9 = 13
1   2001    4       0           # no values less than 4 in 2001: 0
1   2001    9       4           # 1 value less than 9 in 2001  : 4
2   2002    6       2           # etc.
2   2002    1       0           
2   2002    1       0           
3   2003    12      16          
3   2003    11      5           
3   2003    5       0           

我能想到的唯一方法是遍历每一行并分别计算Cum_income中的每个单元格,但我希望有一种更干净的方法。任何建议将非常有帮助。

贝尼

numpy广播中的一些魔术

s1 = df.Year.values
s2 = df.Income.values
np.sum((s1==s1[:,None])*((s2<s2[:,None])*s2), axis=1)
Out[246]: array([13,  0,  4,  2,  0,  0, 16,  5,  0], dtype=int64)
#df['New'] = np.sum((s1==s1[:,None])*((s2<s2[:,None])*s2), axis=1)

说明

(s1==s1[:,None]) 匹配年份,如果年份不相同,我们不检查值,在您的情况下,它将返回False,value * False将为0

(s2<s2[:,None])*s2 检查当前行的值是否具有大于它的值,如果返回True,则将True乘以该行值将是该值,以供将来累加。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件在熊猫数据框中创建一列

如何根据另一列中满足的条件在熊猫数据框中添加新列?

熊猫:生成一个数据框列,其值取决于数据框的另一列

在数据框中创建基于条件和另一列值的新列

遍历列熊猫数据框并根据条件创建另一列

如何从数据框中的另一列按条件创建新组?

对熊猫数据框中的一列求和,其中一列满足条件,但另一列分组

快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

如何根据条件在熊猫数据框中创建新列?

在条件基于另一列的情况下从熊猫数据框中删除重复项

根据另一个熊猫中开始日期和结束日期列的条件创建新的熊猫数据框

条件差异,除以数据框熊猫的同一列

如何过滤数据框并根据熊猫数据框中的另一列获取记录总数?

如何用熊猫数据框另一列中的句子部分创建新列?

如何根据特定条件在数据框熊猫中的列上添加一列

数据框熊猫(NaN列)中的条件和条件

熊猫数据框中的条件列算法

在熊猫数据框中创建一列

根据特定月份的值过滤熊猫数据框,并以另一列为条件

在熊猫数据框中根据条件为组创建列

根据条件在熊猫数据框中创建列

熊猫数据框的条件选择

熊猫:附条件的数据框

熊猫数据框条件更改

熊猫数据框条件计数

条件求和熊猫数据框

如何根据数据框另一列中的条件在列中查找最小值?

如何调节一列的循环以填充熊猫数据框中的另一列值

对熊猫数据框的操作取决于类型