작성
·
199
0
질문 드려요!
df를 axis=1 방향 -> 이쪽방향으로 추가하려고 합니다.
이 때,
df1 = pd.DataFrame()
for i in dflist:
df1 = pd.concat([df1, i], axis=1, join='outer')
대략 이런식으로 설정하려고 합니다.
그리고 매월 혹은 분기마다 종목들이 설정되게 하려고합니다.
해당코드가 '멀티팩터'에서 사용되는데,
밸류팩터에서 1개종목, 모멘텀팩터에서 1개종목, 퀄리티팩터에서 1개종목, 배당팩터에서 1개종목
이렇게 해서 매 분기 4종목씩 소팅이 되게 하려하는 목적입니다.
그리고 그 4개 종목에 동일배분을 하려고 하고요!!
다만, 한 분기에 모멘텀팩터와 밸류펙터에서 같은 종목을 선택하는 경우에
그 분기에는 3개종목만 픽 하게 됩니다.
이 때, 데이터프레임에 3개 종목만 골라지게 되면
원래 4개 종목일 땐 각 팩터당 25%씩 투자해서 sum=100% 를 맞춰주는건데
3개 종목으로 소팅 되면 2개 팩터가 1개 팩터를 골랐을 때 그 1개종목엔 50%를 주고, 나머지 각 팩터의 각 종목(2개)는 25%씩
줘야 하는게 로직 상 맞습니다.
다만, 이렇게 했을 때 코드 차원에서 df를 axis=1 방향으로 추가할 때 인덱스를 종목으로 주어서 axis=0방향으로도 추가가 되는데
컬럼이 axis=1방향으로 df들이 결합될 때 늘어나는 row에서 코딩이 같은 종목을 중복값 처리 해버리네요...
이런식으로요!! A라는 종목이 한 번 더 row 밑으로 추가가 되어야 하는데 컬럼에서 값이 있다보니 그 값을 사용하면서
중복처리가 되어버립니다 ㅠ_ㅠ
append 도 사용해보고 join 도 사용해보고 ignore index 무시도 해보고, 모든 경우의 수를 다 해보았는데
안되어서.. 이럴 때 어떻게 해야하는지 코드좀 요청 드립니다 ;ㅅ;
혹시 이럴 때 if문을 사용해서 ~~가 ~~일 때에는 중복 무시 이런식으로 컨디셔너 소팅을 for loop 안에 해야하는지요.
답변 1
0
안녕하세요!
제가 질문을 잘 이해못한것 같은데, 아래 3가지를 간단한 예시로 올려주실 수 있을까요?
- input dataframe(s)
- 기대한 output dataframe
- 원하는 output dataframe