나는이처럼 보이는 dataframe 있습니다Python : 하나의 열에 반복되는 값이 나타나는 데이터 프레임을 재구성합니다.
Instrument Date Total Return
0 KYG2615B1014 2017-11-29T00:00:00Z 0.000000
1 KYG2615B1014 2017-11-28T00:00:00Z -10.679612
2 KYG2615B1014 2017-11-27T00:00:00Z -8.035714
3 JP3843250006 2017-11-29T00:00:00Z 0.348086
4 JP3843250006 2017-11-28T00:00:00Z 0.349301
5 JP3843250006 2017-11-27T00:00:00Z 0.200000
는 dataframe, 나는 그것을 같이하고 싶습니다 감안할 때 :
11/27/2017 11/28/2017 11/29/2017
KYG2615B1014 -8.035714 -10.679612 0.000000
JP3843250006 0.200000 0.349301 0.348086
기본적으로 내가 원하는 무엇으로 모든 날짜를 배치하는 것입니다 새 열과 해당 열 내부에 해당 값을 배치합니다. 나는 "필터링"또는 "중복"을 말하지 않을 것이고, 이것은 훨씬 더 정리하는 것과 같습니다.
두 데이터 프레임이 모두 생성되었지만이 데이터를 얻기 위해서는 API를 호출해야합니다. 첫 번째 데이터 프레임에서는 한 번만 호출하고이 데이터를 모두 가져 오는 반면 다른 데이터 프레임에서는 각 데이터를 한 번 호출합니다. 그래서 1st가 2 번째보다 훨씬 효율적이고 올바른 호출이라고 생각했지만, 필자는 필요한 부분에 데이터 프레임을 재구성하는이 부분에 갇혀 있습니다.
'Instrument'열에서 반복되는 요소의 인덱스를 선택하여 빈 데이터 프레임을 만든 다음 채우면 해당 인덱스를 사용하여 'Total Return'열에서 요소를 가져온 다음 해당 청크의 요소를 배치합니다 이에 따라 데이터를 수집 할 수 있지만 어떻게해야할지 모르겠다.
누군가 나를 도울 수 있으면 기꺼이 알게 될 것입니다.
나는 두번째 버전 (그것을 채우기 전) dataframe 생성이 어떻게되지 않음이 시점에서 유용한 경우 확실하지만, :
pd.crosstab(df.Instrument, df['Date'],values=df['Total Return'], aggfunc='mean')
출력 :
이import pandas as pd
import datetime
#Getting a list of dates
start=datetime.date(2017,11,27)
end=datetime.date.today() - datetime.timedelta(days=1)
row_dates=[x.strftime('%m/%d/%Y') for x in pd.bdate_range(start,end).tolist()]
#getting identifiers to be used on Eikon
csv_data=pd.read_csv('171128.csv', header=None)
identifiers=csv_data[0].tolist()
df=pd.DataFrame(index=identifiers, columns=row_dates)
https://stackoverflow.com/questions/47152691/how-to-pivot-a-dataframe – Wen
@Wen 감사합니다! 나중에 참조 할 수 있도록이 내용을 저장하겠습니다. 더 깊은 검색을하지 않으면 나쁘다. –