pandas22 pd.concat軸方向接続(またはバインドまたはスタック)(tcy)

9202 ワード

pd.concat 2018/12/29 1. ==================================================================== pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True) : # pandas (DataFrame Series) # objs # 。 keys ( levels[0]) axis=0 # join="outer" # inner outer join_axes=None # 。 n-1 , / # keys=None # 。 、 、 ( levels ) levels =None # levels , keys names=None # levels , keys verify _integrity=False# ,True 。 ignore_index=False # , range(total_length) copy=True # ==================================================================== : concat() , 。 , 。 frames = [ process_your_file(f) for f in files ] result = pd.concat(frames) ============================================================= 2. df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2'], 'C': ['C0', 'C1', 'C2']}) df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],'B': ['B3', 'B4', 'B5'],'C': ['C3', 'C4', 'C5']}) df3 = pd.DataFrame({'A': ['A6', 'A7', 'A8'],'B': ['B6', 'B7', 'B8'],'C': ['C6', 'C7', 'C8']}) df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6'],'D': ['D2', 'D3', 'D6'],'F': ['F2', 'F3', 'F6']},index=[2,3,4]) # 1:axis result = pd.concat([df1, df4], sort=False) # axis=0 result1 =pd.concat([df1, df4], axis=1, sort=False)# axis=1 df1 A B C result result1 0 A0 B0 C0 A B C D F 1 A1 B1 C1 0 A0 B0 C0 NaN NaN A B C B D F 2 A2 B2 C2 1 A1 B1 C1 NaN NaN 0 A0 B0 C0 NaN NaN NaN df4 B D F 2 A2 B2 C2 NaN NaN 1 A1 B1 C1 NaN NaN NaN 2 B2 D2 F2 2 NaN B2 NaN D2 F2 2 A2 B2 C2 B2 D2 F2 3 B3 D3 F3 3 NaN B3 NaN D3 F3 3 NaN NaN NaN B3 D3 F3 4 B6 D6 F6 4 NaN B6 NaN D6 F6 4 NaN NaN NaN B6 D6 F6 ========================================================== # 2:join # inner outer ; join='outer' ,sort=False result = pd.concat([df1, df4], join='outer',sort=False) # result1 = pd.concat([df1, df4], join='inner',sort=False)# df1 A B C result result1 0 A0 B0 C0 A B C D F B 1 A1 B1 C1 0 A0 B0 C0 NaN NaN 0 B0 2 A2 B2 C2 1 A1 B1 C1 NaN NaN 1 B1 df4 B D F 2 A2 B2 C2 NaN NaN 2 B2 2 B2 D2 F2 2 NaN B2 NaN D2 F2 2 B2 3 B3 D3 F3 3 NaN B3 NaN D3 F3 3 B3 4 B6 D6 F6 4 NaN B6 NaN D6 F6 4 B6 =========================================================== # 3:join_axes pd.concat([df1, df4], axis=1, join_axes=[df1.index]) A B C B D F 0 A0 B0 C0 NaN NaN NaN 1 A1 B1 C1 NaN NaN NaN 2 A2 B2 C2 B2 D2 F2 pd.concat([df1, df4], join_axes=[df1.columns]) A B C 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 2 NaN B2 NaN 3 NaN B3 NaN 4 NaN B6 NaN ===================================================== # 4:keys frames = [df1, df2, df3] piece={'x': df1, 'y': df2, 'z': df3} result = pd.concat(frames) result1 = pd.concat(frames, keys=['x', 'y', 'z'],names=['key1','key2'])# result1 = pd.concat( piece,names=['key1','key2']) # result1 = pd.concat(piece, keys=['x', 'y','z'], # , names=['key1','key2']) # ;names result1 = pd.concat(piece, keys=['x', 'y', 'z'],names=['key1','key2'], # levels=[['x', 'y', 'z', 'w']]) #levels keys result1.loc['y'] # y, df2 df1 A B C result result1 0 A0 B0 C0 1 A1 B1 C1 A B C key1 key2 A B C 2 A2 B2 C2 0 A0 B0 C0 x 0 A0 B0 C0 df2 A B C 1 A1 B1 C1 1 A1 B1 C1 0 A3 B3 C3 2 A2 B2 C2 2 A2 B2 C2 1 A4 B4 C4 0 A3 B3 C3 y 0 A3 B3 C3 2 A5 B5 C5 1 A4 B4 C4 1 A4 B4 C4 df3 A B C 2 A5 B5 C5 2 A5 B5 C5 0 A6 B6 C6 0 A6 B6 C6 z 0 A6 B6 C6 1 A7 B7 C7 1 A7 B7 C7 1 A7 B7 C7 2 A8 B8 C8 2 A8 B8 C8 2 A8 B8 C8 ===================================================== # 5:ignore_index result1 =pd.concat([df1, df4], sort=False) result1 =df1.append(df4,sort=False) # result2 =pd.concat([df1, df4], axis=0, sort=False, ignore_index=True) result2 =df1.append(df4, ignore_index=True,sort=False)# result3 =pd.concat([df1, df4], axis=1, sort=False) result4 =pd.concat([df1, df4], axis=1, sort=False, ignore_index=True) result1 result2 result3 result4 A B C D F A B C D F A B C B D F 0 1 2 3 4 5 0 A0 B0 C0 NaN NaN 0 A0 B0 C0 NaN NaN 0 A0 B0 C0 NaN NaN NaN 0 A0 B0 C0 NaN NaN NaN 1 A1 B1 C1 NaN NaN 1 A1 B1 C1 NaN NaN 1 A1 B1 C1 NaN NaN NaN 1 A1 B1 C1 NaN NaN NaN 2 A2 B2 C2 NaN NaN 2 A2 B2 C2 NaN NaN 2 A2 B2 C2 B2 D2 F2 2 A2 B2 C2 B2 D2 F2 2 NaN B2 NaN D2 F2 3 NaN B2 NaN D2 F2 3 NaN NaN NaN B3 D3 F3 3 NaN NaN NaN B3 D3 F3 3 NaN B3 NaN D3 F3 4 NaN B3 NaN D3 F3 4 NaN NaN NaN B6 D6 F6 4 NaN NaN NaN B6 D6 F6 4 NaN B6 NaN D6 F6 5 NaN B6 NaN D6 F6 ======================================================= # 6:verify_integrity pd.concat(frames, verify_integrity=True)# pd.concat(frames, verify_integrity=True)#ValueError ======================================================= # 7: # 7.1: s1 = pd.Series(['a', 'b']) s2 = pd.Series(['c', 'd']) result1=pd.concat([s1, s2]) result2=pd.concat([s1, s2],axis=1) result3=pd.concat([s1, s2], keys=['s1', 's2',],names=['key1','key2']) # result1 result2 result3 # key1 key2 # 0 a # s1 0 a # 1 b # 0 1 # 1 b # 0 c # 0 a c # s2 0 c # 1 d # 1 b d # 1 d ===================================================== # 7.2: s1 = pd.Series(['X0', 'X1', 'X2'], name='X') result = pd.concat([df1, s1,s1], axis=1) A B C X X 0 A0 B0 C0 X0 X0 1 A1 B1 C1 X1 X1 2 A2 B2 C2 X2 X2 result = pd.concat([df1, s1]) A B C 0 0 A0 B0 C0 NaN 1 A1 B1 C1 NaN 2 A2 B2 C2 NaN 0 NaN NaN NaN X0 1 NaN NaN NaN X1 2 NaN NaN NaN X2 ========================================================= # 7.3: s3 = pd.Series([0, 1, 2, 3], name='foo') s4 = pd.Series([0, 1, 2, 3]) s5 = pd.Series([0, 1, 4, 5]) pd.concat([s3, s4, s5], axis=1) foo 0 1 0 0 0 0 1 1 1 1 2 2 2 4 3 3 3 5 pd.concat([s3, s4, s5], axis=1, keys=['red','blue','yellow']) red blue yellow 0 0 0 0 1 1 1 1 2 2 2 4 3 3 3 5