【发布时间】:2019-05-09 12:53:48
【问题描述】:
我正在尝试在 pandas 中创建一个循环来计算连续列之间的差异并在新列中给出输出:
原始df:
**201601** **201602** **201603**
100 200 500
期望的输出
**201601** **201602** **201603** **201602_201601** **201603_02**
100 200 500 100 300
我的代码是我从 stackoverflow 帖子 ([add columns to a data frame calculated by for loops in python) 中修改的:
for i in df.iloc[:,2:5]:
for j in df.iloc[:,2:5]:
if i == j:
break
else:
bina = df[i]-df[j]
df['MOM_' + str(j) + '_' + str(i)] = bina
df.head()
但是,我得到的输出如下:
**201601** **201602** **201603** **201602_201601** **201603_201601** **201603_201602**
100 200 500 100 400 300
我已经使用 pd.diff 来完成我需要的操作,但无法弄清楚 for 循环代码。任何帮助将不胜感激。
谢谢
【问题讨论】:
-
for循环是您可能想要去的相反方向。如果您想迭代数据框,那么您可能根本不想拥有数据框。您应该尝试寻找矢量化方法