2022/01/13/THU
import pandas as pd
df2016=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2016.csv")
df2017=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2017.csv")
df2018=pd.read_csv("https://raw.githubusercontent.com/PacktPublishing/Pandas-Cookbook/master/data/stocks_2018.csv")
pd.concat([df2016,df2017,df2018]) # default는 아래로 쌓음
pd.concat([df2016,df2017,df2018]).reset_index() # 구 인덱스는 아직 존재함
pd.concat([df2016,df2017,df2018]).reset_index(drop=True)
pd.concat([df2016,df2017.iloc[:,1:]]) # df2017에서 선택되지 못한 자료인 0열은 자동으로 NaN처리
pd.concat([df2016,df2017,df2018],axis='columns')
## axis='columns' axis=1로 가능/ 1대신에 0쓰면 rbind, 또는 그냥 aixs=0 안 써도 자동으로 rbind 처리
df=pd.concat([df2016,df2017,df2018],keys=[2016,2017,2018])
df
df.index
- $MuiliIndex$가 됐음을 알 수 있다.
pd.concat({2016:df2016,2017:df2017,2018:df2018})
pd.concat(dict(zip([2016,2017,2018],[df2016,df2017,df2018])))
pd.concat([df2016,df2017,df2018],keys=[2016,2017])
pd.concat([df2016,df2017,df2018],keys=[2016,2018]) #이렇게 해도 이름만 2018이지 데이터는 df2017로 불러오게 된다
pd.concat([df2016,df2017,df2018],keys=['a','S','C',2019]) #2019는 그냥 아무처리도 못함
df=pd.concat([df2016,df2017,df2018],axis=1,keys=[2016,2017,2018])
df
df.columns
- column도 MultiIndex로 들어갔음
pd.concat({2016:df2016,2017:df2017,2018:df2018},axis=1)
pd.concat(dict(zip([2016,2017,2018],[df2016,df2017,df2018])),axis=1)
df=pd.concat(dict(zip([2016,2017,2018],[df2016,df2017,df2018])))
df.stack().reset_index().drop(['level_1'],axis=1).rename(columns={'level_0':'year','level_2':'category',0:'value'})