2017-05-10 6 views
3

새 열에서 목록에 열 값을 결합 : 다음과 같습니다팬더 - 나는 파이썬 팬더 dataframe 안양이

d=[['hello',1,'GOOD','long.kw'], 
    [1.2,'chipotle',np.nan,'bingo'], 
    ['various',np.nan,3000,123.456]]              
t=pd.DataFrame(data=d, columns=['A','B','C','D']) 

을 : 나는 새 열을 만들려고하고

print(t) 
     A   B  C  D 
0 hello   1 GOOD long.kw 
1  1.2 chipotle NaN bingo 
2 various  NaN 3000 123.456 

이는 A, B, CD의 값 중 list입니다. 이 코드를 시도하고

t['combined']            

Out[125]: 
0  [hello, 1, GOOD, long.kw] 
1  [1.2, chipotle, nan, bingo] 
2  [various, nan, 3000, 123.456] 
Name: combined, dtype: object 

을 : 그래서 그것과 같을 것이다

ValueError: Wrong number of items passed 4, placement implies 1 

것은 무엇을 나에게 수수께끼되는 것은 중 하나를 제거하면이 오류를 반환

t['combined'] = t.apply(lambda x: list([x['A'], 
             x['B'], 
             x['C'], 
             x['D']]),axis=1)  

(또는 목록에 추가하지 않는 데이터 프레임에 다른 열을 추가 할 때) 내 코드가 작동합니다. 예를 들어

,이 코드를 실행 '을 요청 왜에 관해서는 완전한 딱하다

print(t) 
     A   B  C  D     combined 
0 hello   1 GOOD long.kw  [hello, 1, long.kw] 
1  1.2 chipotle NaN bingo [1.2, chipotle, bingo] 
2 various  NaN 3000 123.456 [various, nan, 123.456] 

:

t['combined'] = t.apply(lambda x: list([x['A'], 
             x['B'], 
             x['D']]),axis=1)  

반환 나는 단지 3 열을 원한다면 최적 인이 데이터 프레임의 모든 열로 구성된 '결합 된'목록은 오류를 생성하지만 '결합 된'목록을 작성하기 위해 1 열 이외의 모든 열을 선택하면 목록이 예상대로 작성됩니다.

+0

I 나는 여전히 –

+0

내가 올바른 생각하면, t.values는 헤더없이 dataframe의 NumPy와 배열 표현이다 버그 – clg4

답변

6

이 시도 :

t['combined']= t.values.tolist() 

t 
Out[50]: 
     A   B  C  D      combined 
0 hello   1 GOOD long.kw  [hello, 1, GOOD, long.kw] 
1  1.20 chipotle NaN bingo [1.2, chipotle, nan, bingo] 
2 various  NaN 3000 123.46 [various, nan, 3000, 123.456] 
+0

이어야하지만 당신의 접근 방식이 작동하지 않는 이유를 혼동 . Numpy 배열에는 (가능한 경우 중첩 된) list를 반환하는 member tolist()가 있습니다. – johnml1135

+1

당신이 맞습니다,하지만 @ clg4 접근 방식이 작동해야합니다, 그것은 버그 일 수 있습니다 –

+0

좋은 간단 솔루션! +1 – Vaishali