现有函数按轴号对pandas对象进行切片

时间:2014-06-12 03:19:14

标签: python pandas

我希望能够按轴动态索引,例如:

df = pd.DataFrame(data=0, index=['row1', 'row2', 'row3'], columns=['col1', 'col2', col3'])
df.index(['row1', 'row3'], axis=0)     # index by rows
df.index(['col1', 'col2'], axis=1)     # index by columns

以下功能有效,但我想知道是否存在现有功能,因为我认为这是一项常见任务。

def index_axis(df, index, axis):    
    if axis==0: return df.loc[index]
    elif axis==1: return df.loc[:,index]
    elif axis==2: return df.loc[:,:,index]
    else:
        raise ValueError('No axis named {0} for object type {1}'
                         .format(axis, type(df)))

对于那些感兴趣的人,我希望这个函数作为以下的帮助,它删除只包含零的行或列。

def stripZeros(df, axis=0):
    b = (df != 0).any(axis)
    a2 = (axis+1) % 2
    return index_axis(df, df.axes[a2][b], a2)

1 个答案:

答案 0 :(得分:0)

此处的切片表示法是:,表示全部:

In [11]: df.loc[['row1', 'row2'], :]
Out[11]:
      col1  col2  col3
row1     0     0     0
row2     0     0     0

In [12]: df.loc[:, ['col1', 'col2']]
Out[12]:
      col1  col2
row1     0     0
row2     0     0
row3     0     0