2013-08-14 2 views
0

문제 설명 : Train과 Test에 두 개의 데이터 프레임이 있습니다 ('Test'에는 Train에 표시되지 않는 두 개의 변수가 있고 Train에는 하나의 변수가 있음). 테스트에서는 나타나지 않지만 "테스트"를 만들기 위해 R에서 일부 처리를해야했습니다. 팬더에서 PLYR의 전체 참여와 동일한 작업을 수행 할 방법을 찾지 못했기 때문입니다. 공백 및 아포스트로피는 Test에서 R 데이터 프레임 이름의 마침표로 바뀌 었습니다.팬더 데이터 프레임 열 이름 바꾸기 후 유형 오류

현재 문제는 두 데이터 프레임 모두에서 동일한 변수 이름을 가져야한다는 것입니다. 현재 내 시도는 다음과 같습니다.

Test.columns[2:]=Train.columns[1:] 
After index points 2 and 1, columns are the same 

이것은 명목상 작동하는 것으로 보입니다. 내가 입력 할 때

Test.columns 

나는 예상되는 출력을 얻는다. 그러나 나중에 문제가 발생합니다. 조건이 충족되면 Train에서 열을 삭제하려고하고 Test에서 동일한 열을 삭제하려고합니다. 내가

Test['varname'] 
같은 것을 넣으면 그냥

Test 

에 넣어하지만 예상 출력을 얻을 경우

TypeError: 'NoneType' object is not iterable 

내가 같은 오류가 발생

for i in Train.columns[1:]: 
    if condition: 
     del Train[i] 
     del Test[i] 

나는 누군가 wo를 바라고 있었다고 생각한다. uld는 유형 오류를 생성하는 열 이름 재 지정에서 커밋 한 죄를 즉시 인식합니다 (열차에서 삭제하는 경우에는 아무런 문제가 없습니다). 또는 열 이름을 변경하는 다른 방법을 제안하십시오.

대단히 감사합니다.

+0

나는 그것이 반복되는 동안 항상 죄가 반복되는 동안 항상 위험한 게임이라고 생각했다. 그러나 나는 0.12 (어떤 버전의 팬더를 사용하고 있습니까?)에서이를 재현 할 수 없습니다. –

+0

.10을 사용하고 있습니다. – user2187656

+0

이 문제 (예 : 더미 데이터)를 보여주는 예를 게시 할 수 있습니까? 아마도 하나의 행 (그러나 열이있는)이있는 DataFrames가이 동작을 나타내기에 충분할 것입니까? (업그레이드로 해결 될 수도 있지만 확실하지는 않습니다.) –

답변

0

rename과 같은 기능을 사용하는 것이 좋습니다. .와 아포스트로피 및 공백을 대체 :

In [11]: df = pd.DataFrame([[1, 2], [3, 4]], columns=["don't", "no way"]) 

In [12]: df.rename(columns=lambda x: x.replace("'", '.').replace(' ', '.')) 
Out[12]: 
    don.t no.way 
0  1  2 
1  3  4 

그것은 여기 R을 사용하지하는 것이 바람직의 ...
아마도 그것은 PLYR의 스타일이 풀에 참여하는 방법에 대한 또 다른 질문을 가치? :)

+0

은 외부 조인과 다른 전체 조인입니다. (df1.join (df2, how = 'outer')'? –

+0

. 내 제안을 주셔서 감사합니다, 그것은 효과적으로 내 문제를 해결합니다. – user2187656

관련 문제