我有一个充满数据框架的pandas面板。我想连接面板中的数据框。 pandas.concat获取数据框的列表或字典,但不是面板。是否有捷径可寻?我想如果我将Panel转换为字典,那么我可以连接它。
Python 2.7.5+ (default, Feb 27 2014, 19:37:08)
Type "copyright", "credits" or "license" for more information.
IPython 1.2.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import pandas
In [2]: data_frames = {}
In [3]: import numpy as np
In [5]: for i in range(3):
data_frames[i] = pandas.DataFrame(np.random.random((4, 4)))
...:
In [6]: p = pandas.Panel(data_frames)
In [7]: p
Out[7]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 4 (major_axis) x 4 (minor_axis)
Items axis: 0 to 2
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 3
In [10]: c = pandas.concat(data_frames, ignore_index=True)
In [11]: c
Out[11]:
0 1 2 3
0 0.181703 0.375656 0.264426 0.627724
1 0.098423 0.197307 0.032177 0.780775
2 0.854787 0.338352 0.769010 0.084029
3 0.153036 0.563780 0.164906 0.588682
4 0.995582 0.757451 0.304299 0.838461
5 0.728513 0.080770 0.817670 0.515151
6 0.020350 0.902724 0.316773 0.495761
7 0.241298 0.337299 0.534545 0.339601
8 0.080109 0.657868 0.786786 0.234976
9 0.684836 0.180652 0.708958 0.132093
10 0.962909 0.525090 0.333035 0.482024
11 0.117683 0.756001 0.037237 0.463168
[12 rows x 4 columns]
In [13]: p[0]
Out[13]:
0 1 2 3
0 0.181703 0.375656 0.264426 0.627724
1 0.098423 0.197307 0.032177 0.780775
2 0.854787 0.338352 0.769010 0.084029
3 0.153036 0.563780 0.164906 0.588682
[4 rows x 4 columns]
In [14]: c = pandas.concat(p, ignore_index=True)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-14-d22562d31e50> in <module>()
----> 1 c = pandas.concat(p, ignore_index=True)
/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.pyc in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity)
927 ignore_index=ignore_index, join=join,
928 keys=keys, levels=levels, names=names,
--> 929 verify_integrity=verify_integrity)
930 return op.get_result()
931
/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.pyc in __init__(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity)
942 raise AssertionError('first argument must be a list-like of pandas '
943 'objects, you passed an object of type '
--> 944 '"{0}"'.format(type(objs).__name__))
945
946 if join == 'outer':
AssertionError: first argument must be a list-like of pandas objects, you passed an object of type "Panel"
答案 0 :(得分:0)
使用to_frame()
方法。要获得所需的输出,您需要转置轴并在之后重置索引。
In [31]: p.transpose(2, 0, 1).to_frame().reset_index(drop=True)
Out[31]:
0 1 2 3
0 0.780538 0.412587 0.587926 0.217103
1 0.019309 0.246170 0.965017 0.839562
2 0.742044 0.829160 0.456377 0.250517
3 0.206528 0.753775 0.533168 0.832652
4 0.913328 0.319370 0.236834 0.060967
5 0.684704 0.804084 0.321675 0.792670
6 0.717193 0.720800 0.243751 0.285807
7 0.074519 0.478942 0.327018 0.027021
8 0.406145 0.667695 0.136186 0.434807
9 0.137058 0.964003 0.082268 0.425817
10 0.067491 0.708419 0.352805 0.522568
11 0.738875 0.101868 0.062147 0.085819
[12 rows x 4 columns]