name date value
a 1/1/2011 3
b 1/1/2011 5
c 1/1/2011 7
a 1/2/2011 6
b 1/2/2011 10
c 1/2/2011 14
我在这里有一个df,其中的值是累积统计信息。因此,name: a
date: 1/2/2011
的实际值是3而不是6。要获取特定日期的实际值,我需要将当天的值减去前一天的值。我想计算每个日期每个名称的实际值。与df.groupby(['name', 'date'])['value'].diff()
相似,但此代码返回错误。
最后我需要的是
name date actual value
a 1/1/2011 3
b 1/1/2011 5
c 1/1/2011 7
a 1/2/2011 3
b 1/2/2011 5
c 1/2/2011 7
答案 0 :(得分:3)
这可以单行且矢量化的方式完成。
import pandas as pd
df = pd.read_clipboard() # Reading from your question
df['value'] = df.groupby('name')['value'].diff(1).fillna(df['value'])
正如评论中所讨论的那样,在应用'values
来正确替换fillna
中的NaN
值时,有必要参考原始的diff
系列(这种情况发生在'name'
中每个标签的第一个实例。
答案 1 :(得分:2)
/**
* on after content init lifecycle hook
*/
ngAfterContentInit() : void {
this.froalaEditor.markAsPristine();
this.froalaEditor.markAsUntouched();
}