【发布时间】:2020-07-12 03:25:51
【问题描述】:
我有一个数据框,我想创建一些包含原始列增长的新列。
首先,我将新列附加到数据框中,用 NaN 值填充它们。
然后,对于每一行,我检查前一行是否对应于上一年,如果是,我想用变量的增长填充新列。否则我只留下 NaN 值。
这是我的代码:
for index, row in df.iterrows():
if df.loc[index,'year'] == df.loc[index - 1, 'year'] + 1 and df.loc[index,'name'] == df.loc[index - 1, 'name']:
df.loc[index,k:] = (df.loc[index,1:k-1]/df.loc[index-1,1:k-1]) - 1
其中 k 是我创建的第一个新“增长”列的列索引。
此代码的问题在于它在新列中留下了 NaN 值,而没有进行任何更改。我做错什么了吗?
谢谢
【问题讨论】:
-
df.merge(df.assign(year=df.year+1), on = 'year'...)的东西。 -
谢谢。我每年都有多个观察(公司),我不确定这会奏效。数据框最初按公司名称排序,然后按年份排序,并且在 if 条件中还有一个 and 条件,即该行的公司名称等于上一行中的公司名称。
标签: python pandas loops dataframe indexing