函数创建的多个列表输出,如何将其放入数据帧?

时间:2017-11-24 22:56:02

标签: python list pandas

我有以下功能

macd, macdsignal, macdhist = talib.MACD(df.Close.values, fastperiod=12, slowperiod=26, signalperiod=9)

我想将这些新值作为现有数据框的一部分,我该怎么做? 这就是我试过的

 df['macd'], df['macdsignal'], df['macdhist'] = talib.MACD(df.Close.values, fastperiod=12, slowperiod=26, signalperiod=9)

编辑以添加前后

之前

Close 
10
10 
10 

Close    macd    macdsignal    macdhist
10       1.1     3.8           5.7
10       3.2     8.7           4.2   
10       1.9     9.5           1.2

1 个答案:

答案 0 :(得分:1)

假设talib.MACD(df.Close.values, fastperiod=12, slowperiod=26, signalperiod=9)返回列表列表,您可以获得以下两件事:

将列分配给同一数据帧:

lofl = talib.MACD(df.Close.values, fastperiod=12, slowperiod=26, signalperiod=9)
df[['macd', 'macdsignal', 'macdhist']] = pd.DataFrame.from_records(zip(*lofl))

使用df.assign

创建新数据框
lofl = talib.MACD(df.Close.values, fastperiod=12, slowperiod=26, signalperiod=9)
new_cols = ['macd', 'macdsignal', 'macdhist']
d = {k:v for k,v in zip(new_cols, lofl)}
df = df.assign(**d)

我希望这证明有用。