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