【问题标题】:How to select rows based on unlabelled first column of a multidimentional dataframe in pandas in python?python - 如何根据python中pandas中多维数据框的未标记第一列选择行?
【发布时间】:2018-05-05 13:18:08
【问题描述】:

我有以下数据框:

             1   2   3   4   5   6   7   8   9   10
cat   cat     1   1   1   1   1   1   0   0   1   1
      dog     1   0   1   1   1   1   0   0   1   1
      fox     0   0   0   0   0   0   0   0   0   0
      jumps   1   0   1   1   1   0   0   1   1   1
      over    1   0   1   1   1   1   0   0   1   1
      the     1   0   1   1   1   1   0   0   1   1
dog   cat     1   1   0   1   1   1   0   0   1   0
      dog     1   1   1   1   1   1   0   0   1   1
      fox     1   1   1   1   1   1   0   0   1   1
      jumps   1   1   1   1   1   1   0   1   1   1
      over    1   1   1   1   1   1   0   0   1   1
      the     1   1   1   1   1   1   1   0   1   1
fox   cat     0   0   0   0   0   0   0   0   0   0
      dog     1   1   1   1   1   1   0   0   1   1
      fox     1   1   1   1   1   1   0   0   1   1
      jumps   1   1   1   1   1   1   0   1   1   1
      over    1   1   1   1   1   1   0   0   1   1
      the     1   1   1   1   1   1   1   0   1   1
jumps cat     1   1   0   1   0   1   1   0   1   0
      dog     1   1   1   1   1   1   1   0   1   0
      fox     1   1   1   1   1   1   1   0   1   0
      jumps   1   1   1   1   1   1   0   0   1   0
      over    1   0   1   1   1   0   0   1   1   0
      the     1   0   1   1   1   1   0   0   1   0
over  cat     1   1   0   1   1   1   0   0   1   0
      dog     1   1   1   1   1   1   0   0   1   0
      fox     1   1   1   1   1   1   0   0   1   0
      jumps   1   1   0   1   0   1   1   0   1   0
      over    1   1   1   1   1   1   0   0   1   0
      the     1   0   1   1   1   0   0   1   1   0
the   cat     1   1   0   1   1   1   0   0   1   0
      dog     1   1   1   1   1   1   0   1   1   0
      fox     1   1   1   1   1   1   0   1   1   0
      jumps   1   1   0   1   1   1   0   0   1   0
      over    1   1   0   1   0   1   1   0   1   0
      the     1   1   1   1   1   1   0   0   1   0

如您所见,前两列未标记。我想选择 column1 == 'dog' 的所有行

所以我最终得到了这个:

dog   cat     1   1   0   1   1   1   0   0   1   0
dog   dog     1   1   1   1   1   1   0   0   1   1
dog   fox     1   1   1   1   1   1   0   0   1   1
dog   jumps   1   1   1   1   1   1   0   1   1   1
dog   over    1   1   1   1   1   1   0   0   1   1
dog   the     1   1   1   1   1   1   1   0   1   1

如果它有标签,解决方案是:

print(df.loc[df['label'] == 'dog'])

但是因为它没有标签,我该如何实现呢? 任何建议将不胜感激。谢谢。

【问题讨论】:

  • df.loc['dog'] 试过吗?

标签: python pandas dataframe


【解决方案1】:

你想要做的是使用这样的双括号:

df.loc[['dog']]

输出:

           1  2  3  4  5  6  7  8  9  10
dog cat    1  1  0  1  1  1  0  0  1   0
    dog    1  1  1  1  1  1  0  0  1   1
    fox    1  1  1  1  1  1  0  0  1   1
    jumps  1  1  1  1  1  1  0  1  1   1
    over   1  1  1  1  1  1  0  0  1   1
    the    1  1  1  1  1  1  1  0  1   1

那你可以reset_index:

df.loc[['dog']].reset_index()

输出:

  level_0 level_1  1  2  3  4  5  6  7  8  9  10
0     dog     cat  1  1  0  1  1  1  0  0  1   0
1     dog     dog  1  1  1  1  1  1  0  0  1   1
2     dog     fox  1  1  1  1  1  1  0  0  1   1
3     dog   jumps  1  1  1  1  1  1  0  1  1   1
4     dog    over  1  1  1  1  1  1  0  0  1   1
5     dog     the  1  1  1  1  1  1  1  0  1   1

MultiIndex 上的 Pandas 文档非常好

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2016-11-02
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
相关资源
最近更新 更多