Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从数据帧中删除并索引和关联的数据_Python_Python 2.7_Pandas - Fatal编程技术网

Python 从数据帧中删除并索引和关联的数据

Python 从数据帧中删除并索引和关联的数据,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有一个如下所示的数据帧: df = pd.DataFrame({'a': {('0hr', '0.01um', 0): 12, ('0hr', '0.01um', 1): 10, ('0hr', '0.1um', 0): 8, ('0hr', '0.1um', 1): 6, ('0hr', 'Control', 0): 4, ('0hr', 'Control', 1): 2, ('24hr', '0.01um', 0): 18, ('24hr', '0.01um',

我有一个如下所示的数据帧:

df = pd.DataFrame({'a': {('0hr', '0.01um', 0): 12,
  ('0hr', '0.01um', 1): 10,
  ('0hr', '0.1um', 0): 8,
  ('0hr', '0.1um', 1): 6,
  ('0hr', 'Control', 0): 4,
  ('0hr', 'Control', 1): 2,
  ('24hr', '0.01um', 0): 18,
  ('24hr', '0.01um', 1): 15,
  ('24hr', '0.1um', 0): 12,
  ('24hr', '0.1um', 1): 9,
  ('24hr', 'Control', 0): 6,
  ('24hr', 'Control', 1): 3},
 'b': {('0hr', '0.01um', 0): 42,
  ('0hr', '0.01um', 1): 35,
  ('0hr', '0.1um', 0): 28,
  ('0hr', '0.1um', 1): 21,
  ('0hr', 'Control', 0): 14,
  ('0hr', 'Control', 1): 7,
  ('24hr', '0.01um', 0): 30,
  ('24hr', '0.01um', 1): 25,
  ('24hr', '0.1um', 0): 20,
  ('24hr', '0.1um', 1): 15,
  ('24hr', 'Control', 0): 10,
  ('24hr', 'Control', 1): 5}})
我想用相同的索引和列创建一个数据帧,但在索引轴上少一个级别

我知道我能做到:

df2 = pd.DataFrame(index=df.index columns=df.columns)
然后重置索引以删除第二级:

df2.reset_index(level=2,drop=True,inplace=True)
但这会产生:

                a    b
0hr  0.01um   NaN  NaN
     0.01um   NaN  NaN
     0.1um    NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN
     Control  NaN  NaN
24hr 0.01um   NaN  NaN
     0.01um   NaN  NaN
     0.1um    NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN
     Control  NaN  NaN
如何使复制的数据帧看起来像这样:

                a    b
0hr  0.01um   NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN
24hr 0.01um   NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN

您可以使用
drop\u duplicates
方法:

In [11]: df.index.droplevel(2)
Out[11]:
MultiIndex(levels=[[u'0hr', u'24hr'], [u'0.01um', u'0.1um', u'Control']],
           labels=[[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2]])

In [12]: df.index.droplevel(2).drop_duplicates()
Out[12]:
MultiIndex(levels=[[u'0hr', u'24hr'], [u'0.01um', u'0.1um', u'Control']],
           labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
您可以将其输入数据帧:

In [13]: pd.DataFrame(index=df.index.droplevel(2).drop_duplicates(), columns=df.columns)
Out[13]:
                a    b
0hr  0.01um   NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN
24hr 0.01um   NaN  NaN
     0.1um    NaN  NaN
     Control  NaN  NaN