Python 如何从一系列数组构造数据帧

Python 如何从一系列数组构造数据帧,python,arrays,pandas,numpy,dataframe,Python,Arrays,Pandas,Numpy,Dataframe,您好,我有以下系列的numpy阵列: datetime 03-Sep-15 [53.5688348969, 31.2542494769, 18.002043765] 04-Sep-15 [46.845084292, 27.0833015735, 15.5997887379] 08-Sep-15 [52.8701581666, 30.7347431703, 17.6379377917] 09-Sep-15 [47.9535624339,

您好,我有以下系列的numpy阵列:

 datetime
    03-Sep-15     [53.5688348969, 31.2542494769, 18.002043765]
    04-Sep-15     [46.845084292, 27.0833015735, 15.5997887379]
    08-Sep-15    [52.8701581666, 30.7347431703, 17.6379377917]
    09-Sep-15    [47.9535624339, 27.7063099999, 15.9126963643]
    10-Sep-15     [51.2900606534, 29.600945626, 16.8756260105]

你知道我如何把它转换成一个有3列的数据框吗?谢谢

它的性能不会很好,但您应该能够
应用(pd.Series)

>>ser
2015年9月3日[53.5688348969,31.2542494769,18.002043765]
2015年9月4日[46.845084292,27.0833015735,15.5997887379]
2015年9月8日[52.8701581666,30.7347431703,17.6379377917]
2015年9月9日[47.9535624339、27.706309999、15.9126963643]
2015年9月10日[51.2900606534,29.600945626,16.8756260105]
数据类型:对象
>>>类型(序列值[0])
>>>系列应用(pd系列)
0          1          2
2015年9月3日53.568835 31.254249 18.002044
2015年9月4日46.845084 27.083302 15.599789
2015年9月8日52.870158 30.734743 17.637938
2015年9月9日47.953562 27.706310 15.912696
2015年9月10日51.290061 29.600946 16.875626

将列表列表提供给pd.DataFrame是一种更有效的方法:

s = pd.Series([np.array([53.5688348969, 31.2542494769, 18.002043765]),
               np.array([46.845084292, 27.0833015735, 15.5997887379]),
               np.array([52.8701581666, 30.7347431703, 17.6379377917]),
               np.array([47.9535624339, 27.7063099999, 15.9126963643]),
               np.array([51.2900606534, 29.600945626, 16.8756260105])],
              index=['03-Sep-15', '04-Sep-15', '08-Sep-15', '09-Sep-15', '10-Sep-15'])

df = pd.DataFrame(s.values.tolist(), index=s.index)

print(df)

                   0          1          2
03-Sep-15  53.568835  31.254249  18.002044
04-Sep-15  46.845084  27.083302  15.599789
08-Sep-15  52.870158  30.734743  17.637938
09-Sep-15  47.953562  27.706310  15.912696
10-Sep-15  51.290061  29.600946  16.875626
Python 3.6/0.19上的基准测试:

%timeit pd.DataFrame(s.values.tolist(), index=s.index)  # 448 µs per loop
%timeit s.apply(pd.Series)                              # 1.5 ms per loop

你到底有什么?一个系列?是的,没错。这是一系列数组。您是如何创建的?请发布一个可运行的示例。让我回到这里。因为我刚刚意识到数组中有一些被视为单行的NAN。现在还不要花时间在这上面。
%timeit pd.DataFrame(s.values.tolist(), index=s.index)  # 448 µs per loop
%timeit s.apply(pd.Series)                              # 1.5 ms per loop