如果我有一个数组[1, 2, 3, 4, 5]和一个熊猫数据框

df = pd.DataFrame([[1,1,1,1,1], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]])

   0  1  2  3  4
0  1  1  1  1  1
1  0  0  0  0  0
2  0  0  0  0  0
3  0  0  0  0  0


如何遍历Pandas DataFrame,将数组添加到上一行?

预期结果将是:

   0  1   2   3   4
0  1  1   1   1   1
1  2  3   4   5   6
2  3  5   7   9  11
3  4  7  10  13  16

最佳答案

将该数组添加n次到第n行,您可以使用np.arange(len(df))[:,None] * a创建该数组,然后添加第一行:

df
#   0  1  2  3  4
#0  1  1  1  1  1
#1  0  0  0  0  0
#2  0  0  0  0  0
#3  0  0  0  0  0

a = np.array([1, 2, 3, 4, 5])

np.arange(len(df))[:,None] * a
#array([[ 0,  0,  0,  0,  0],
#       [ 1,  2,  3,  4,  5],
#       [ 2,  4,  6,  8, 10],
#       [ 3,  6,  9, 12, 15]])

df[:] = df.iloc[0].values + np.arange(len(df))[:,None] * a

df
#   0  1   2   3   4
#0  1  1   1   1   1
#1  2  3   4   5   6
#2  3  5   7   9  11
#3  4  7  10  13  16

关于python - 如何在 Pandas 的前一行中添加数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51598859/

10-16 22:50