Python 向函数内dataframe中的前一行添加值
我正在寻找一种在函数框架内生成C列(第一行=10000)的解决方案,即不进行迭代但进行矢量化:Python 向函数内dataframe中的前一行添加值,python,function,pandas,vectorization,Python,Function,Pandas,Vectorization,我正在寻找一种在函数框架内生成C列(第一行=10000)的解决方案,即不进行迭代但进行矢量化: index A B c 1 0 0 1000 2 100 0 900 3 0 0 900 4 0 200 1100 5 0 0 1100 该函数应类似于以下内容: def calculate(self): df = pd.DataFrame() df['A'] = self.som
index A B c
1 0 0 1000
2 100 0 900
3 0 0 900
4 0 200 1100
5 0 0 1100
该函数应类似于以下内容:
def calculate(self):
df = pd.DataFrame()
df['A'] = self.some_value
df['B'] = self.some_other_value
df['C'] = df['C'].shift(1) - df['A'] + df['B']........
但对前一行的引用不起作用。如何完成列出的任务?这应该可以:
df['C'] = 1000 + (-df['A'] + df['B']).cumsum()
df
Out[80]:
A B C
0 0 0 1000
1 100 0 900
2 0 0 900
3 0 200 1100
4 0 0 1100
出于兴趣,是否有一种方法(本着.shift(1)的精神)以矢量形式引用先前的单元格?在逻辑“如果A=100,则计算C=1000+A,否则使用先前的单元值C”?
。移位(1)
移位现有序列,这不是动态操作。您描述的是一个迭代过程,在Excel或循环中很容易实现,但对于该操作,您需要向量C的处理版本(先前的值是指使用相同公式计算的先前值)。但是,pandas使用具有初始值的现有向量。据我所知,若并没有循环,你们所描述的是不可能的。你们为什么要删除这个问题?我有答案给你们。或者你们也找到答案了吗?;)对不起,我自己为第一部分找到了一个解决方案,使问题看起来很愚蠢(没有问题)。)另一个问题很难回答;)