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

香努

我有一个熊猫数据框,如下所示:

import pandas as pd 
import numpy as np
import datetime

# intialise data of lists. 
data = {'month'      :[2,3,4,5,6,7,2,3,6,5],
        'flag': ["A","A","A","A","A","A","B","B","B","B"],
        'month1'     :[4,4,7,15,11,13,6,5,6,5],
       'value'     :[100,20,50,10,65,86,24,12,1000,200]
       } 

# Create DataFrame 
df = pd.DataFrame(data) 

# Print the output. 
df 
    month   flag    month1  value
0   2       A       4       100
1   3       A       4       20
2   4       A       7       50
3   5       A       15      10
4   6       A       11      65
5   7       A       13      86
6   2       B       6       24
7   3       B       5       12
8   6       B       6       1000
9   5       B       5       200

现在,对于每个月中唯一的标志,我想执行以下逻辑

1)创建一个变量“最终”并将其设置为0

2)对于每个月,如果month1 <= max(month),则将其中month == month1的“ final”设置为从month1开始的“ final” +原始月份的值。例如,

  • 索引0到5是一组(标志='A')
  • A组的月份列的最大值为7
  • 对于第1行(第2个月),month1是小于7的4,请转到第4个月(第3行),将“最终”列的值更新为100(0(当前“最终”值)+100(原始值月)
  • 对组中的每一行执行上述步骤。

预期产量:

    month   flag    month1  value   Final
0   2       A       4       100     0
1   3       A       4       20      0
2   4       A       7       50      120
3   5       A       15      10      0
4   6       A       11      65      0
5   7       A       13      86      50
6   2       B       6       24      0
7   3       B       5       12      0
8   6       B       6       1000    1024
9   5       B       5       200     212
我想要一片T骨牛排

您可以groupby'flag'和'month1'并获取sum'value',然后将merge其与df加号加fillna0,例如:

new_df = df.merge(df.groupby(['flag', 'month1'])[['value']].sum(), 
                  left_on=['flag','month'], right_index=True, 
                  how='left', suffixes=('','_final'))\
           .fillna({'value_final':0})
print (new_df)
   month flag  month1  value  value_final
0      2    A       4    100          0.0
1      3    A       4     20          0.0
2      4    A       7     50        120.0
3      5    A      15     10          0.0
4      6    A      11     65          0.0
5      7    A      13     86         50.0
6      2    B       6     24          0.0
7      3    B       5     12          0.0
8      6    B       6   1000       1024.0
9      5    B       5    200        212.0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

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

如何根据条件在熊猫中创建另一列?

如何根据以前的状态在熊猫数据框中创建一列?

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

根据一列中的条件在数据框中创建新变量,从另一列中提取?(dplyr)

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

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

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

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

在熊猫数据框中创建一列

根据熊猫中另一列上的值在数据框中创建一个新列

熊猫根据选择为条件的另一列中的值创建一列

根据一列显示熊猫数据框重复项,然后根据条件保留

根据熊猫中数据框的另一列的值添加一列

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

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

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

使用熊猫数据框根据过滤条件删除其中一列的方括号

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

根据另一列的条件创建熊猫列

如何根据另一列的条件创建熊猫列?

根据条件在熊猫数据框中将一列的值提供给另一列

根据熊猫数据框中另一列的最后一个值填充列

根据另一列中的相同值组合熊猫数据框列中的文本值

根据数据框B中的条件,从数据框A的一列求和

如何根据唯一列组合熊猫数据框