작성
·
232
0
강의중에 individual_port_val_df_list로 정의하고 뽑았을 때 맨 아래처럼 나오는데 result1, 2
에서 for df in individualport_val_df_list[1:]:
result_port_df_list.append(_df.iloc[1:]) 의 의미는 예를 들어 A B C 2018-01-31 0.30 0.50 0.20 2018-02-10 0.45 0.50 0.24 2018-02-20 0.36 0.40 0.28 2018-02-28 0.39 0.65 0.32,(여기다 복붙하면 이렇게 가독성이 떨어져서 아쉽네요)
이런식으로 묶음 형태들로 뽑아져 나오는데 result 1
for df in individualport_val_df_list[1:]:
result_port_df_list.append(_df.iloc[1:]) 경우 의미가 2018-01-31(자금 첫 투입) 제외하고 첫번째로 예를들면 2018-02-28 0.408000 0.680000 0.272의 값과 같이 2개씩 나오는 거중에 처음을 남기고 두번째를 지워나가게 쓰인 것으로 이해했는데(맞나요?)
result2
if i == len(individual_port_val_df_list)-1:
result_port_df_list.append(_df)
else:
result_port_df_list.append(_df.iloc[:-1])
이 코드부분은 if i == len(individual_port_val_df_list)-1 인 경우와 else: result_port_df_list.append(_df.iloc[:-1]) 부분이 잘 이해가 안되는데 if i == len(individual_port_val_df_list)-1 이면 묶음으로 뽑아져 나올 때 그 한 묶음의 개수가 4라면(2018-01-31~2018-02-28) if i == len(individual_port_val_df_list)-1는 if i == 3이 되고 0,1,2,3이렇게 다 나오고 else:
result_port_df_list.append(_df.iloc[:-1]) 는 어떻게 실행되는지 잘 이해가 안돼요..(강의중에 포트폴리오에 넣었다가 위의 값을 삭제하고 아랫값을 남긴다고 하셨는데 지금 코드가 이해가 안되네요 ㅠㅠ)
앞에서 제가 result1을 이해한 방식이 맞는지, 그리고 result2에서 질문드린 코드의 의미를 알려주실 수 있나요? 그리고 묶음이라고 표현했는데(표현방법을 잘 몰라서) 뽑히는 방식도 그렇게가 맞는지?
1.
result_port_df_list = [individual_port_val_df_list[0]]
for df in individualport_val_df_list[1:]:
result_port_df_list.append(_df.iloc[1:])
result1_ind = pd.concat(result_port_df_list)
result1_port = result1_ind.sum(axis=1)
2. result_port_df_list = []
for i, df in enumerate(individualport_val_df_list):
if i == len(individual_port_val_df_list)-1:
result_port_df_list.append(_df)
else:
result_port_df_list.append(_df.iloc[:-1])
result2_ind = pd.concat(result_port_df_list)
result2_port = result1_ind.sum(axis=1)
[ A B C
2018-01-31 0.30 0.50 0.20
2018-02-10 0.45 0.50 0.24
2018-02-20 0.36 0.40 0.28
2018-02-28 0.39 0.65 0.32,
A B C
2018-02-28 0.408000 0.680000 0.272
2018-03-20 0.313846 0.627692 0.238
2018-03-29 0.345231 0.627692 0.238,
A B C
2018-03-29 0.363277 0.605462 0.242185
2018-04-30 0.396302 0.605462 ㅇ0.276782]
답변 1
0
안녕하세요.
우선 답이 늦어서 죄송합니다 ㅠ
정말 죄송하지만, 가독성이 너무 떨어져서 질문이해하기가 어렵습니다.
스크린샷(코드에 대한 결과값) 그리고 키보드의 tab 키 위에 있는 '`' 키를 사용하면 code를 훨씬 쉽게 첨부할 수 있습니다.
e.g.
'`' 키로 df = pd.DataFrame()을 감싼경우
df = pd.Dataframe()
혹은 텍스트 편집기의 '<>' symbol을 이용하는 경우
a = 1
b = 2
c = a + b
번거로우시더라도 정리 후 질문주시면 답변드리도록 하겠습니다.