1

我有一个 Pandas 系列,其中该系列的每个元素都是一个单行 Pandas DataFrame,我想将其附加到一个大 DataFrame 中。例如:

import pandas as pd
mySeries = pd.Series( numpy.arange(start=1, stop=5, step=1) )

def myFun(val):
    return pd.DataFrame( { 'square' : [val**2],
                           'cube' :  [val**3] } )
## returns a Pandas Series where each element is a single row dataframe
myResult = mySeries.apply(myFun)

那么如何myResult将所有的小数据帧合并到一个大数据帧中呢?

4

3 回答 3

3
import pandas as pd
import numpy as np
mySeries = pd.Series(np.arange(start=1, stop=5, step=1))


def myFun(val):
    return pd.Series([val ** 2, val ** 3], index=['square', 'cube'])

myResult = mySeries.apply(myFun)
print(myResult)

产量

   square  cube
0       1     1
1       4     8
2       9    27
3      16    64
于 2013-05-01T14:47:56.163 回答
1

连接它们:

In [58]: pd.concat(myResult).reset_index(drop=True)
Out[58]: 
   cube  square
0     1       1
1     8       4
2    27       9
3    64      16

由于原来的索引都是0,所以我也重置了它们。

于 2013-05-02T12:18:44.710 回答
1

尽管您可能发布了一个简化的示例,但它似乎过于复杂。为每一行创建一个新系列会产生大量开销。例如,这在我的机器上要快 200 倍以上(对于 n=500):

meResult = pd.DataFrame({'square': mySeries**2,'cube': mySeries**3})
于 2013-05-01T15:02:29.207 回答