2017-10-15 9 views
1

私はPandasを使い始めたばかりなので、何か重要なものを見逃しているかもしれませんが、私が作業している2つの列を正しく引き出すことができません。パンダで2つの部分列を引く方法は?

df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1') 
df.head()をやっ

私のテーブルには、次のようになります:次のように私は、インポートExcelのスプレッドシートを持っている

 a   b  c  d 
0  stuff  stuff stuff stuff 
1  stuff  stuff stuff stuff 
2  data  data  data  data 
... ...  ...  ...  ... 
89 data  data  data  data 

私は気にしない「もの。」私はちょうどデータの2つの列を減算し、これを独自の列にしたいと思います。したがって、私が私が興味を持っていないよ行を切り落とすと残るもので動作する必要があることを明らかに見えたので、私は次のことを試してみました:

dataCol1 = df.ix[2:,0:1] 
dataCol2 = df.ix[2:,1:2] 
print(dataCol1.sub(dataCol2,axis=0)) 

しかし、それは

   a   b 
2   NaN  NaN 
3   NaN  NaN 
4   NaN  NaN 
...   ...  ... 
89   NaN  NaN 

私は、その結果私が単にprint(dataCol1-dataCol2)を試しても同じ結果が得られます。これらの両方の減算演算がどのようにしてNaNのすべての結果になるか理解できないだけでなく、結果が1つではなく2つの列も理解できません。 Excelスプレッドシートから簡単に直接、両方の仕事にどのような方法があります

 a  
2  data  
3  data 
4  data  
... ... 
89 data  

との切断部分と基本的な操作を実行:I print(dataCol1)は、例えば、私は私が一緒に仕事をしたい列を得る行うときので、スプレッドシートの列?おそらく、これについてはdf.ixを使用するよりも良い方法があり、私はこれらの方法にも間違いがないと確信しています。

答えて

0

問題は、あなたのインデックスのmisallignmentです。

dataCol1 = df.iloc[2: , 0:1] # ix is deprecated 
dataCol2 = df.iloc[2: , 1:2] 

result = pd.DataFrame(dataCol1.values - dataCol2.values) 
+0

ありがとう:あなたは、アライメントの問題に対処する必要はありませんので、実行する

ことの一つは、値を減算することであろう!なぜ 'ix'は廃止されましたか? – Oak

+0

@Oak 'ix'はあなたのデータに関するいくつかの仮定をしており、少し不安定です。彼らはその機能を 'loc'と' iloc'に分割することに決めました。あなたのパンダを更新してそれをチェックしてください。 –

関連する問題