2016-12-01 15 views
0

私はpandasを新しくしました。私は6列で構成されていDATAFRAMEを持っていると私はこれを行うforループを作りたいと思います:Pandas、substract columnsループ内のデータフレーム

-create新しい列(NC 1) -nc1 =列1 - 列2

とIを最後の1は次のようになりますので、すべての列のためにこれを反復したい: NCX =列5列6

私はこのような列をsubstractことができます。

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

が、私がしようとすると、これは便利ではありません私はいつもtを挿入する必要があるのでループを行う彼はコラムの名前。

数値を列として参照する方法を教えてもらえますか? ありがとうございました!ここで

+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

関連する問題