考虑以下最小例子:
import numpy as np
import pandas as pd
data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
'foo': [pd.Series(np.random.randn(3)*2) for x in xrange(8)]}
df = pd.DataFrame(data, columns=['year', 'foo'])
在df
中呈现iPython
时,我会得到类似的内容:
year foo
0 2010 0 1.936300 1 0.460437 2 1.895832 dtyp...
1 2011 0 -1.639541 1 -0.460803 2 0.196103 dtyp...
2 2012 0 1.868190 1 -0.571973 2 0.029239 dtyp...
3 2011 0 -1.034721 1 -1.268487 2 0.719374 dtyp...
4 2012 0 1.249795 1 3.279158 2 -3.221805 dtyp...
5 2010 0 3.175814 1 -3.441948 2 -3.710086 dtyp...
6 2011 0 1.237284 1 -2.225327 2 2.923511 dtyp...
7 2012 0 -1.306018 1 -0.804952 2 -0.861195 dtyp...
我想要以下内容:
year foo
0 2010 0 1.936300
1 0.460437
2 1.895832
1 2011 0 -1.639541
1 -0.460803
2 0.196103
2 2012 0 1.868190
1 -0.571973
2 0.029239
3 2011 0 -1.034721
1 -1.268487
2 0.719374
特别是,foo
列中的每个单元格都应显示相应系列中的所有值(并省略dtype
部分)。
另一个想要的观点,也可能是有用的,是拆分构成foo
的系列。换句话说,在上面的示例中,有六列(而不是foo
的一列)将保存系列的索引和值。
答案 0 :(得分:0)
类似的东西?:
s = df['foo'].apply(pd.Series, 1).stack()
s.index = s.index.droplevel()
s.name = 'foo'
del df['foo']
df = df.join(s)
df