如何从Python列表中提取值并将其放入数据框

时间:2020-10-07 09:10:22

标签: python pandas

我训练了一个模型,并要求该模型产生系数:

modelcoeffs = model.fit(X_train, y_train).coef_
coeffslist = list(modelcoeffs)

例如,这让我高兴:

print(coeffslist):
[0.17005542 0.72965947 0.6833308  0.02509676]

我正在尝试将这4个系数分解出来,但是它们似乎并不是单独的元素?

有人知道如何将它们分成四个数字吗?

我正在尝试获取:

df['1'] = coeffslist[0]
df['2'] = coeffslist[1]
df['3'] = coeffslist[2]
df['4'] = coeffslist[3]

但是它在NaN中给了我df。有人有什么想法吗?谢谢!

更新

我基本上是想让系数附加到df

print(df)

  1             2         3         4    
....         .....      .....      .....
0.17005542 0.72965947 0.6833308  0.02509676

2 个答案:

答案 0 :(得分:0)

coeffslist看起来像不是有效的Python结构,缺少逗号。

但是您可以尝试以下方法:

import pandas as pd
df = pd.DataFrame([0.17005542, 0.72965947, 0.6833308, 0.02509676])
print(df)

输出:

          0
0  0.170055
1  0.729659
2  0.683331
3  0.025097

要获取coefs作为行,请尝试以下操作:

import pandas as pd
df = pd.DataFrame(columns=list("1234"))
df.loc[len(df)] = [0.17005542, 0.72965947, 0.6833308, 0.02509676]
print(df)

输出:

          1         2         3         4
0  0.170055  0.729659  0.683331  0.025097

如果要添加另一行(追加)coef,只需执行以下操作:

df.loc[1] = [0.17005542, 0.72965947, 0.6833308, 0.02509676]
print(df)

输出:

          1         2         3         4
0  0.170055  0.729659  0.683331  0.025097
1  0.170055  0.729659  0.683331  0.025097

答案 1 :(得分:0)

您可以将[0.17005542 0.72965947 0.6833308 0.02509676]转换为字符串,在空间上拆分,再转换为浮点,然后附加到数据帧。

str_list= str(coeffslist[0])
float_list= [float(x) for x in str_list.split()]

df=pd.DataFrame(columns=['1','2','3','4'])
a_series = pd.Series(float_list, index = df.columns)
df = df.append(a_series, ignore_index=True)