我怎么能删除数据帧中的一些行

时间:2015-03-18 08:24:00

标签: python pandas

如何删除数据框中的某些行

我怎样才能在表格中保留u'Lower End of Central Tendency'u'Upper End of Central Tendency'。并删除多余的行?

  • 数据框的显示表(内容来自JSON文件)

  • 数据框的预期表(标记的行是不必要的)

  • JSON数据如下

    {u'2007': {u'Actual': u'3.5',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Lower\xa0End\xa0of\xa0Range': u'-',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Upper\xa0End\xa0of\xa0Range': u'-'},
     u'2008': {u'Actual': u'1.7',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Lower\xa0End\xa0of\xa0Range': u'-',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Upper\xa0End\xa0of\xa0Range': u'-'},
     u'2009': {u'Actual': u'1.4',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Lower\xa0End\xa0of\xa0Range': u'-',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Upper\xa0End\xa0of\xa0Range': u'-'},
     u'2010': {u'Actual': u'1.5',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Lower\xa0End\xa0of\xa0Range': u'-',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Upper\xa0End\xa0of\xa0Range': u'-'},
     u'2011': {u'Actual': u'2.5',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Lower\xa0End\xa0of\xa0Range': u'-',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'-',
      u'Upper\xa0End\xa0of\xa0Range': u'-'},
     u'2012': {u'Actual': u'-',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'1.6',
      u'Lower\xa0End\xa0of\xa0Range': u'1.6',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'1.7',
      u'Upper\xa0End\xa0of\xa0Range': u'1.8'},
     u'2013': {u'Actual': u'-',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'1.3',
      u'Lower\xa0End\xa0of\xa0Range': u'1.3',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'2.0',
      u'Upper\xa0End\xa0of\xa0Range': u'2.0'},
     u'2014': {u'Actual': u'-',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'1.5',
      u'Lower\xa0End\xa0of\xa0Range': u'1.4',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'2.0',
      u'Upper\xa0End\xa0of\xa0Range': u'2.2'},
     u'2015': {u'Actual': u'-',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'1.7',
      u'Lower\xa0End\xa0of\xa0Range': u'1.5',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'2.0',
      u'Upper\xa0End\xa0of\xa0Range': u'2.2'},
     u'Longer Run': {u'Actual': u'-',
      u'Lower\xa0End\xa0of\xa0Central\xa0Tendency': u'2.0',
      u'Lower\xa0End\xa0of\xa0Range': u'2.0',
      u'Upper\xa0End\xa0of\xa0Central\xa0Tendency': u'2.0',
      u'Upper\xa0End\xa0of\xa0Range': u'2.0'}}
    

2 个答案:

答案 0 :(得分:0)

您正在寻找drop()函数,有两种方法可以按名称和索引删除行。通过示例展示可能最容易:

>>> df
       c1  c2  c3
one     0   1   2
two     3   4   5
three   6   7   8
four    9  10  11
>>> df2 = df.copy()
>>> df2.drop(['one', 'three'], axis=0, inplace=True)
>>> df2
      c1  c2  c3
two    3   4   5
four   9  10  11

或者您可以使用索引的数字索引删除行,如下所示:

>>> df3.drop(df3.index[[0,3]], inplace=True)
>>> df3
       c1  c2  c3
two     3   4   5
three   6   7   8

轴默认为0,因此如果您不将其放入,则删除行。要删除列,请使用axis = 1。 inplace参数默认为False。因此,如果您只想要一个没有坏行的副本,请保留该参数并保存返回值。

文档here

答案 1 :(得分:0)

无需删除只需选择您感兴趣的行:

df.loc[['Lower End of Central Tendency','Upper End of Central Tendency']]

将仅对这些行执行行标签选择,例如:

In [164]:

df = pd.DataFrame({'a':np.random.randn(5)})
df
Out[164]:
          a
0  0.523139
1  1.042023
2  1.528064
3 -1.920597
4 -0.408413
In [166]:

df.loc[[1,3]]
Out[166]:
          a
1  1.042023

修改

如果你真的想删除它们,只需将它分配回你的df:

df = df.loc[[1,3]]