2017-01-04 1 views
1

다음과 같은 테이블이 있습니다 (검은 색). 오른쪽에 빨간색으로 표시되는 것과 같은 추가 열을 만들고 싶습니다. 기본적으로 "슬라이스"열의 각 슬라이스 변수에 대해 "낮은"열에서 해당 값을 검색합니다. 응답자의Python Pandas : 슬라이스를 변수로 사용하는 테이블 조작

Python Pandas: Function doesn't work when used with apply()

하나에 : 나는 그 일의 수많은 방법을 시도

enter image description here

, 나는 이미 내가 생각 일 것이다 접근 방식 중 하나를 해결하기 위해 노력하고 여기에 질문을 게시 그 질문은 내가 그것을 달성하는 방법을 간단히 묻는다고 제안 했으므로 나는 여기있다.

df = pd.DataFrame(dict, columns=["low", "slices"]) 

    {'low': {0: 1207.25, 
    1: 1207.5, 
    2: 1205.75, 
    3: 1206.0, 
    4: 1201.0, 
    5: 1202.75, 
    6: 1203.75}, 
'slices': {0: [slice(1, 1, None)], 
    1: [slice(1, 2, None), slice(2, 2, None)], 
    2: [slice(1, 3, None), slice(2, 3, None), slice(3, 3, None)], 
    3: [slice(1, 4, None), 
    slice(2, 4, None), 
    slice(3, 4, None), 
    slice(4, 4, None)], 
    4: [slice(1, 5, None), 
    slice(2, 5, None), 
    slice(3, 5, None), 
    slice(4, 5, None), 
    slice(5, 5, None)], 
    5: [slice(1, 6, None), 
    slice(2, 6, None), 
    slice(3, 6, None), 
    slice(4, 6, None), 
    slice(5, 6, None), 
    slice(6, 6, None)], 
    6: [slice(1, 7, None), 
    slice(2, 7, None), 
    slice(3, 7, None), 
    slice(4, 7, None), 
    slice(5, 7, None), 
    slice(6, 7, None), 
    slice(7, 7, None)]}} 

답변

2

이 기능이 방법

def fun(slices): 
    return [df.low.loc[s].tolist() for s in slices] 

을 정의하고 조각 열

df['slices_low'] = df.slices.apply(fun) 

df 

enter image description here

에 걸쳐 적용

나는 또한 dataframe을 재구성하는 코드 아래에 다시 게시

+1

^^ 남자 나는 거의 하루 종일 그것을 찾고 있었어 ... 우리는 하루나 이틀 동안 뇌의 스왑을해야 해 !! 어쨌든 고마워요! 사람들에게 도움을 줄 수있는 기회를 얻는 것은 정말 기쁩니다. –

+0

@jimbasqui 또 다른 긍정적 인 결과는 질문을 더 잘 표현하고 더 많이 활용할 수있는 방법을 배울 수 있다는 것입니다. – piRSquared

+1

빠른 질문 왜 당신의 함수에 .loc이 아니라 .loc을 사용하고 있습니까? 슬라이스는 인덱스 번호의 정수 값을 기반으로합니까? –