2017-11-29 3 views
2

팬ダ 데이터 프레임 내의 모든 열에 하나의 작업 만 수행하려고합니다.다른 열을 유지하면서 pandas 데이터 프레임 내의 특정 열에서 작업을 수행하는 방법

은 내가 먼저 시도 :

df=df[:,1:]*0.001 

오류 메시지를 반환했습니다. 그럼 시도 :

df=df.iloc[:,1:]*0.001 

첫 번째 것을 제외한 모든 열에서 작업을 수행하려고합니다. 그러나이 작업은 데이터 프레임을 작업을 위해 선택한 열로 바꿉니다.

다른 열을 변경하지 않고 조작을 수행하려면 특정 열을 어떻게 선택합니까? 내가 처음으로 열을 건드리지 않은 상황이있을 수 있습니다.

감사합니다.

답변

0

데모 : 첫 번째 열이 그대로 남아

In [87]: d = pd.DataFrame(np.arange(25).reshape(5,5)).add_prefix('col') 

In [88]: d 
Out[88]: 
    col0 col1 col2 col3 col4 
0  0  1  2  3  4 
1  5  6  7  8  9 
2 10 11 12 13 14 
3 15 16 17 18 19 
4 20 21 22 23 24 

In [89]: d.loc[:, d.columns != 'col2'] *= 0.01 

In [90]: d 
Out[90]: 
    col0 col1 col2 col3 col4 
0 0.00 0.01  2 0.03 0.04 
1 0.05 0.06  7 0.08 0.09 
2 0.10 0.11 12 0.13 0.14 
3 0.15 0.16 17 0.18 0.19 
4 0.20 0.21 22 0.23 0.24 
+0

감사합니다. @MaxU. 작업을 수행 할 열을 선택하는 'df.iloc [:, 1 :]'시도는 아무 문제가없는 것으로 생각합니다. 그러나 데이터 프레임을 선택한 열로 바꾼 것입니다. '* ='를 사용하여 그것을 고쳤습니다. – spc963

0
import pandas as pd 

data = [[1,10, 5],[2,12,6],[3,13,7]] 
df = pd.DataFrame(data,columns=['Name','Age', 'ID']) 
print(df) 

     Name Age ID 
0  1  10 5 
1  2  12 6 
2  3  13 7 

colnames = list(df.columns) 

print(colnames) 

['Name', 'Age', 'ID'] 

colnames.pop(0) 


for i in colnames: 

    df[i] = df[i]*0.01 

print(df) 

    Name Age  ID 
0 1  0.10 0.05 
1 2  0.12 0.06 
2 3  0.13 0.07 

. 이 그것을 할 수있는 최선의 방법을하지 않을 수 있지만, 당신이 다음 무시 특정 열을 원하는 경우에 당신이 컬럼의 인덱스 0을 대체 라인 colnames.pop(0)

,

을 무엇을 물어 않습니다. 여기에서 열이 색인 0에 있기 때문에 나는 colnames.pop(0)을 작성했습니다.

관련 문제