2016-12-01 78 views
0

我是熊猫新手。我有在由6列的数据帧和我想使一个for循环,这是否:大熊猫,减法柱数据帧循环

-create新的一列(NC 1) -nc1 = 1列 - 列2

和我要重复这所有列,所以最后一个是: NCX =列5列6

我可以列。减去像这样:

df['nc'] = df.Column1 - df.Column2 

但是当我尝试这是没有用的做一个循环,因为我总是要插入t他是colums的名字。

有人可以帮我告诉我怎样才能将数列引用到列中? 谢谢!

+0

对不起,你要求'df.diff(axis = 1)'? – EdChum

+0

嗨,这真的很有帮助。 – Vasil

回答

0
In [26]: import numpy as np 
    ...: import random 
    ...: import pandas as pd 
    ...: 
    ...: A = pd.DataFrame(np.random.randint(100, size=(5, 6))) 

In [27]: A 
Out[27]: 
    0 1 2 3 4 5 
0 82 13 17 58 68 67 
1 81 45 15 11 20 63 
2 0 84 34 60 90 34 
3 59 28 46 96 86 53 
4 45 74 14 10 5 12 

In [28]: for i in range(0, 5): 
    ...:  A[(i + 6)] = A[i] - A[(i + 1)] 
    ...: 
    ...: 
    ...: A 
    ...: 
Out[28]: 
    0 1 2 3 4 5 6 7 8 9 10 
0 82 13 17 58 68 67 69 -4 -41 -10 1 
1 81 45 15 11 20 63 36 30 4 -9 -43 
2 0 84 34 60 90 34 -84 50 -26 -30 56 
3 59 28 46 96 86 53 31 -18 -50 10 33 
4 45 74 14 10 5 12 -29 60 4 5 -7 

In [29]: nc = 1 #The first new column 
    ...: A[(nc + 5)] #outputs the first new column 
Out[29]: 
0 69 
1 36 
2 -84 
3 31 
4 -29 

在这里,你不需要用名字来称呼它,只是由列号码,你可以只写一个简单的函数调用列+ 5

事情是这样的:

In [31]: def call_new_column(n): 
    ...:  return(A[(n + 5)]) 
    ...: 
    ...: 
    ...: call_new_column(2) 
Out[31]: 
0 -4 
1 30 
2 50 
3 -18 
4 60 
+0

嗨, 感谢您的帮助,但我想知道是否有办法做到这一点,当你的列没有一个数字作为名字,例如,如果你必须操纵别人的数据,他没有命名带数字的列。 – Vasil