在for循环的每个循环中向df添加一个新列

时间:2019-03-22 16:29:00

标签: python pandas dataframe

我正在使用for循环对数据帧进行一些修改。我在for循环的每个循环中添加一个新列,但是,我也在循环结束时删除了该列。我想知道是否有可能在每个周期存储此列的值,并创建一个由每个周期生成的每个列组成的新数据框。我正在使用以下代码:

import numpy as np
import pandas as pd

newdf = np.zeros([1000,5])
df = pd.DataFrame(np.random.choice([0.0, 0.05], size=(1000,1000)))

for i in range(0, 10):
    df['sum']= df.iloc[:, -1000:].sum(axis=1)
    newdf[:,i] = df['sum']
    df = df.drop('sum', 1)

但是,出现以下错误:

  

索引5超出了尺寸5的轴1的范围

谢谢

1 个答案:

答案 0 :(得分:2)

发生此问题的原因并非与df有关,而是因为当i = 5时,newdf[:, i]指的是仅包含五列的NumPy数组的第六列。相反,如果您通过newdf初始化newdf = np.zeros([1000, 10]),或仅在range(5)上循环,那么您的代码将运行而不会出错。

相关问题