Python 以熊猫系列为例,其中每个元素都是一个数据帧,并将它们组合成一个大数据帧
我有一个Pandas系列,其中系列的每个元素都是一行Pandas数据帧,我想将其附加到一个大数据帧中。例如:Python 以熊猫系列为例,其中每个元素都是一个数据帧,并将它们组合成一个大数据帧,python,pandas,Python,Pandas,我有一个Pandas系列,其中系列的每个元素都是一行Pandas数据帧,我想将其附加到一个大数据帧中。例如: 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] }
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
和所有小数据帧组合成一个大数据帧呢
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
屈服
square cube
0 1 1
1 4 8
2 9 27
3 16 64
虽然您可能发布了一个简化的示例,但它似乎过于复杂。为每行创建一个新系列会产生大量开销。例如,在我的机器上,该速度要快200多倍(对于n=500):
meResult = pd.DataFrame({'square': mySeries**2,'cube': mySeries**3})
虽然您可能发布了一个简化的示例,但它似乎过于复杂。为每行创建一个新系列会产生大量开销。例如,在我的机器上,该速度要快200多倍(对于n=500):
meResult = pd.DataFrame({'square': mySeries**2,'cube': mySeries**3})
他们:
因为原始索引都是0,所以我也重置了它们。它们:
因为原始索引都是0,所以我也重置了它们。刚要发布非常类似的内容……仅供参考,函数可以返回列标签作为函数系列的索引,例如
pd.series([val**2,val**3,index=['square','cube'])
将按以下方式工作well@Jeff:啊,好多了。谢谢。我正要发布非常类似的…仅供参考,您可以将列标签作为函数系列的索引返回,例如,pd.series([val**2,val**3,index=['square','cube']))
将按以下方式工作well@Jeff:啊,好多了。谢谢。你的直觉是正确的。我的例子有点极端简化。你的直觉是正确的。我的例子有点极端简化。你也可以做pd.concat(myResult,ignore\u index=True)
你也可以做pd.concat(myResult,ignore\u index=True)