2017-10-15 9 views
1

나는 Pandas를 시작하기 때문에 중요한 것을 놓치고 있을지 모르지만, 나는 함께 작업하고있는 두 개의 열을 빼는 것 같지 않습니다.팬더가있는 부분 열 두 개를 빼는 방법은 무엇입니까?

df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1') 
df.head()을하고

내 표는 다음과 유사합니다 다음과 같이 나는 수입 엑셀 스프레드 시트를

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

나는 걱정하지 않는다 "물건;" 데이터의 두 열을 뺀 다음이 열을 직접 만들고 싶습니다. 따라서 나는에 관심이 아니에요 및 유지 어떤 작업 행을 손질해야한다는 분명한 것 같았다, 그래서 나는 다음과 같은 시도 :

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 

I 결과 또한 간단히 시도해 보면 같은 결과가 나온다 print(dataCol1-dataCol2). 이 두 빼기 연산이 모두 모든 NaN의 결과뿐만 아니라 최종 결과가있는 하나의 열 대신에 두 개의 열이되는 방법을 실제로 이해하지 못합니다. Excel 스프레드 시트에서 간단하고 직접적으로 모두 작업에 어떤 방법이 있나요

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

과의 잘린 부분과 기본 작업을 수행 : I print(dataCol1), 예를 들어, 내가 작업 할 열을 취득 할 때 때문에 스프레드 시트의 열? 어쩌면 df.ix을 사용하는 것보다이 방법을 사용하는 것이 더 좋은 방법 일 수 있으며 이러한 방법에도 확실히 열려 있습니다.

답변

0

문제는 색인의 오정렬입니다. 할

한 가지 값을 빼야하는 것입니다, 그래서 당신은 정렬 문제를 처리 할 필요가 없습니다 :

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'로 분리하기로 결정했습니다. 판다를 업데이트하고 그것을 확인하십시오. –