一、多級索引
1、Series多級索引示例:
data = pd.Series(np.random.randn(9),index=[['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd'],[1, 2, 3, 1, 3, 1, 2, 2, 3]])
a 1 -0.204708 2 0.478943 3 -0.519439 b 1 -0.555730 3 1.965781 c 1 1.393406 2 0.092908 d 2 0.281746 3 0.769023
2、將兩級索引轉換為一級索引形式的DataFrame
data.unstack()
3、將一個二維表格轉換為高級索引Series
obj.stack()
4、DataFrame多級索引示例
frame = pd.DataFrame(np.arange(12).reshape((4, 3)),index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],columns=[['Ohio', 'Ohio', 'Colorado'],['Green', 'Red', 'Green']])
5、給索引添加名稱
frame.index.names = ['key1', 'key2'] #一級行索引名稱為key1,二級行索引名稱為key2
frame.columns.names=['state', 'color'] #一級列索引名稱為state,二級列索引名稱為color
6、索引互換位置
frame.swaplevel(i=-2, j=-1, axis=0)
#適用於兩級索引的位置互換,i和j可以傳入int,或者String(索引名稱),axis=0:代表行索引互換,axis=1代表列索引位置互換
7、索引排序
frame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)
axis:對行索引還是列索引進行排序
level:對第幾級別索引進行排序
ascending:升序還是降序
inplace:view還是inplace
8、將列索引設置為行索引
frame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
keys:列標簽或列標簽列表
drop:刪除已經作為行標簽的keys對應的列
append:是否將keys添加到現有的index后面
9、將多級行索引變為列索引
frame.reset_index()
二、數據表合並
1.merge
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False)
left:左邊表格
right:右邊表格
how:inner:取交集,outer:並集;left:參照左邊表格行,right:參照右邊表格行
on:當left和right有相同的列名時,默認按照相同的列名進行合並,可以指定一個列表,當表格中有兩個以上相同的列名時。
left_on和right_on:分別指定左邊表格參照列和右邊表格參照列,適用於參照列名稱不一致的情況。可以為列表,對應的對方表格中也必須是列表或多級索引。
suffixes:是否添加后綴,如果left和right有相同的列名時添加后綴
left_index和right_index:當使用列名匹配索引時使用。是left_on和right_on的特殊情況。
2.join
left.join(right, on=None, how='left', lsuffix='', rsuffix='', sort=False)
join是merge的一種特殊形式.所有功能可以用merge來實現。
#默認left和right 以相同的索引連接
#on:可以指定相同的列名或列名組成的元祖或列表
#how:同merge
#lsuffix和rsuffix代表相同列名添加的后綴
3.concatnate連接
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
功能:沿着設定的軸線連接兩個表格
objs:需要連接的對象序列,用列表標示
axis:沿着index或者columns
join:outer,inner
join_axes:指定連接的索引列表,形式為[[ ]],用於代替join的inner或者outer
keys:通常為一個列表,構造一個高級索引,keys作為指定obj的高級索引,通常和objs個數一致。
names:指定高級索引對應的名稱
ignore_index:是否忽略索引,默認為Fasle,合並過程中各自保留原來的索引值,True:使用新的索引從0到n-1
4、重疊數據的合並
where(condition, [x, y]):例:np.where(pd.isnull(a),a,b)
condition:arraylike,bool;
x,y:arraylike,與condition長度一致,如果為真返回x,否則y,
obj1.combine_first(obj2):如果obj1對應位置有數據(不為nan)使用obj1的數據,否則使用obj2的數據