根据仅为新ID累加的另一列创建一个累加列

尼尔森

我有以下数据集:

Time = ['00:01', '00:02','00:03','00:01','00:02','00:03','00:01','00:02','00:03']
ID = [1, 1, 1, 2, 2, 2, 3, 3, 3]
Value = [3.5, 3.5, 3.5, 4.1, 4.1, 4.1, 2.3, 2.3, 2.3]   
df = pd.DataFrame({'Time':Time, 'ID':ID, 'Value':Value})

每个ID的每个值都相同。我想创建一个新列,该列会累计“值”列,但仅当每个ID更改时才累加。V

所以,而不是得到

3.5   7   10.5   14.6   18.7   22.8   25.1   27.3   29.5

我想要

3.5   3.5   3.5   7.6   7.6   7.6   9.9   9.9   9.9
马那金

使用.loc指定的值,

shift 测试ID在哪里更改

然后cumsumffill

df.loc[:, "Val"] = df[df["ID"].ne(df["ID"].shift())][
    "Value"
].cumsum()

df['Val'] = df['Val'].ffill()

print(df)

    Time  ID  Value  Val
0  00:01   1    3.5  3.5
1  00:02   1    3.5  3.5
2  00:03   1    3.5  3.5
3  00:01   2    4.1  7.6
4  00:02   2    4.1  7.6
5  00:03   2    4.1  7.6
6  00:01   3    2.3  9.9
7  00:02   3    2.3  9.9
8  00:03   3    2.3  9.9

或更简单地按照Ch3steR的建议

df['Value'].where(df['Value'].ne(df['Value'].shift(1))).cumsum().ffill()

0    3.5
1    3.5
2    3.5
3    7.6
4    7.6
5    7.6
6    9.9
7    9.9
8    9.9

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列的最终累加总和创建新变量

Python:将一个数据框中的一列与另一个累加起来

如何使用Pandas根据另一个列的值累加或减去值?

在MySQL中创建一个累加列

根据另一列的字符串创建一个新列

Pandas 根据另一列的非空值创建一个新列

根据pandas中另一列的状态创建一个新列

根据另一列的因子水平创建一个新列

根据另一列的groupby结果创建一个新列

根据另一列 R 中的条件创建一个新列

根据另一列和另一个表中的值创建一个新列

通过累加另一个矩阵的行在R中创建新矩阵

如何迭代另一列中的嵌套字段以根据另一个值创建新列?

根据ID的列值创建一个新列

根据另一列 pandas 中特定值的累积出现次数创建一个新列

根据另一列的内容在R中创建一个新列[特定情况]

根据 Pandas 中另一列中相似值的分组创建一个新列

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

如何根据同一数据文件中另一列中的信息来累加一列中的某些值?

创建一个新列,在两列中添加天数,其中一列包含数据,另一列包含ID

根据另一列中的条件指定一个新列

根据数据矩阵中的另一列生成一个新列

根据另一列的值创建新列

根据另一列的值创建新列

根据另一列中的值创建新列

创建一个新列,该列是按日期将一列与另一列相加的总和

根据条件创建一个新的“ID”列

根据一个列在另一列的+/- 5%之内创建一个指标列

根据MYSQL表中一列的值创建一个新列