Python 请参阅数据帧列或索引,具体取决于参数
我正在编写一个对熊猫数据帧的标签进行操作的函数,我希望有一个参数Python 请参阅数据帧列或索引,具体取决于参数,python,pandas,Python,Pandas,我正在编写一个对熊猫数据帧的标签进行操作的函数,我希望有一个参数axis来决定是对索引还是对列进行操作 所以我写了这样的东西: if axis==0: to_sort = df.index elif axis==1: to_sort = df.columns else: raise AttributeError 其中,df是一个数据帧 有更好的方法吗 注意:我不是要求代码检查,而是更具体地要求是否有pandas属性(类似于labels的属性对我来说有意义),允许我根据要
axis
来决定是对索引还是对列进行操作
所以我写了这样的东西:
if axis==0:
to_sort = df.index
elif axis==1:
to_sort = df.columns
else:
raise AttributeError
其中,df
是一个数据帧
有更好的方法吗
注意:我不是要求代码检查,而是更具体地要求是否有pandas属性(类似于labels
的属性对我来说有意义),允许我根据要传递的参数/索引获取索引或列
例如(代码不工作):
通过查看文档示例,我意识到我可以这样做:
- 让参数为轴={'index','columns'}
- 使用
:getattr
labels=getattr(df,axis)
如果我被迫使用
axis={1,0}
,那么@Bharath建议使用helper函数是有意义的。简短回答:您可以使用iloc(axis=…)
文件:
您还可以将axis参数指定为.loc以解释传递的
单轴切片机
(它们似乎忽略了轴
参数的iloc
)
一个完整的例子
输出:
A B
0 a1 b1
1 a2 b2
Index(['A', 'B'], dtype='object')
RangeIndex(start=0, stop=2, step=1)
轴=0时
输出:
A B
0 a1 b1
1 a2 b2
Index(['A', 'B'], dtype='object')
RangeIndex(start=0, stop=2, step=1)
轴=1时
输出:
A B
0 a1 b1
1 a2 b2
Index(['A', 'B'], dtype='object')
RangeIndex(start=0, stop=2, step=1)
任何关于更好标题的建议都会被广泛接受
.index
和.columns
有什么问题?您只能使用它们,因为这是错误的,但是…在这段代码的末尾,我指定了转换后的标签。然后,我将不得不再次执行上述的if/else。所以我只是想知道是否有一种引用索引或列的参数化方法来避免这种重复。为什么不使用函数来完成这项任务呢<代码>def标签(df,参数):然后标签(df,参数)
。目前,据我所知,它们都不是一个对象。您对iloc
有多大把握?它不是用来获取索引和列的。您正在使用iloc选择数据。您可能必须在最后使用.index
。如果我误解了您的问题,请道歉。我以为输出就是你想要的。或者你是说它不适合你?如果你理解这个问题,OP要求的是以一个对象的形式为.index
和.columns
提供一个可选的选项,以提供两者。因此,如果使用iloc,它将通过将特定轴设置为索引来提供数据。因此,您可能必须使用df.iloc(axis=1)[0]。index
给出OP要求的内容。好吧,很公平,我已经更新了它。虽然我意识到轴心的意义已经改变了。