【问题标题】:Get indexes of multiple pandas columns by names按名称获取多个 pandas 列的索引
【发布时间】:2014-05-21 00:08:34
【问题描述】:

我想获取一组 pandas 数据框列的数字索引。

一栏很简单:

nonzero(df.columns.values == 'conditionA')

但是有多个元素? 我有一些有用的东西,但是很冗长,很冗长:

df = pd.DataFrame(columns=['conditionF', 'conditionB', 'conditionA', 'conditionD', 'conditionC'])

cols_to_find = ['conditionA', 'conditionB', 'conditionC']
[i for i in range(len(df.columns.values)) if df.columns.tolist()[i] in cols_to_find ]

更好的想法?

【问题讨论】:

  • 试试np.nonzero(df.columns.isin(to_find))
  • 这就是答案!它就在那里......我正在寻找一个 isin() 函数,但没有找到方法!发送!
  • @behzad.nouri 请将其作为答案发布,以便 Gioelelm 能够接受它并向其他人表明问题已明确解决
  • @behzad.nouri:很好,但它不会保留列名列表中的顺序,而是按升序重新排列它们。
  • 我发布了一个保留顺序的解决方案。

标签: python numpy pandas dataframe


【解决方案1】:

这行得通,而且还保持秩序

[df.columns.get_loc(col) for col in cols_to_find]
[2, 1, 4]

列表推导是你的朋友。

【讨论】:

  • @MTKnife: 好的,但是 AFAIK 对于没有提到多索引的问题来说它工作得很好,你能发布一个例子(具有唯一的列名)get_loc 返回多个值吗?然后我们可以看看如何处理那个案例。
  • 实际上,我很抱歉:我刚刚注意到您正在查看列,并且对于列,您不太可能有重复。这将是同名行的问题(包括,比如说,MultiIndex 中具有相同 0 级值的多行)。
  • @MTKnife:既然我们都同意你的第一条评论不正确,请你删除它吗?
猜你喜欢
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2021-05-12
  • 2018-06-01
  • 1970-01-01
相关资源
最近更新 更多