同じインデックスと列を持つ単純なデータフレームを1つの大きなデータフレームに再形成して連結しようとしています。たとえば、2つのデータセットがあり、1つはtを測定しているとします。
In [8]: df1
Out[8]:
z a k
2010 t0 t1 t2
2011 t3 t4 t5
2012 t6 t7 t8
2013 t9 t10 t11
および別の測定p:
In [10]: df2
Out[10]:
z a k
2010 p0 p1 p2
2011 p3 p4 p5
2012 p6 p7 p8
2013 p9 p10 p11
そして私はこのデータフレームを作成したいと思います:
...: df3
Out[11]:
t's p's
stats dates
z 2010 NaN NaN
2011 NaN NaN
2012 NaN NaN
2013 NaN NaN
a 2010 NaN NaN
2011 NaN NaN
2012 NaN NaN
2013 NaN NaN
k 2010 NaN NaN
2011 NaN NaN
2012 NaN NaN
2013 NaN NaN
明らかにtとpに対応するデータがあります。さまざまな.stack()を.swaplevel()で試し、軸1に沿って連結しましたが、常に.sort_index()を使用することになります。これは、「zak」の順序を保持しません。これを効率的に実行する方法はありますか?
両方ので使用concat
し、最後に設定されたインデックス名:DataFrame.unstack
DataFrame
DataFrame.rename_axis
df = pd.concat([df1.unstack(),
df2.unstack()], axis=1, keys=('t\'s','p\'s')).rename_axis(['stats','dates'])
print (df)
t's p's
stats dates
z 2010 t0 p0
2011 t3 p3
2012 t6 p6
2013 t9 p9
a 2010 t1 p1
2011 t4 p4
2012 t7 p7
2013 t10 p10
k 2010 t2 p2
2011 t5 p5
2012 t8 p8
2013 t11 p11
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加