从数组和列表创建熊猫系列

时间:2019-06-04 15:55:08

标签: python pandas

我正在尝试将数组数据映射到列名列表

cols = list(X.columns)
a = log_reg.coef_
pd.Series(data=a,index=cols)

但不断收到此错误消息

ValueError: Length of passed values is 1, index implies 32

这是一个数据示例

array([[-3.45917636e-04,  3.61924667e-01, -4.09270503e-01,
        -8.77365851e-01,  2.63110856e-01,  1.19371203e-01,
        -1.24971101e-01,  4.36160913e-01, -3.99315598e-01,
        -4.43522845e-01, -4.06608631e-01, -3.75995346e-01,
        -7.94023490e-02, -3.19954555e-01, -6.44072018e-01,
        -6.89515406e-01, -3.31630739e-01, -4.58094286e-01,
         1.17109079e-01,  2.28902301e-02,  1.74657944e-01,
         4.70689088e-01,  5.72027148e-01,  2.93303704e-01,
        -6.04354969e-03, -6.04084018e-01,  1.22102664e-01,
        -3.65628250e-02,  8.46421904e-02, -3.97469438e-03,
         1.05515634e+00, -6.57530123e-01]])

以及cols中的行列表:

['Time',
 'V1',
 'V2',
 'V3',
 'V4',
 'V5',
 'V6',
 'V7',
 'V8',
 'V9',
 'V10',
 'V11',
 'V12',
 'V13',
 'V14',
 'V15',
 'V16',
 'V17',
 'V18',
 'V19',
 'V20',
 'V21',
 'V22',
 'V23',
 'V24',
 'V25',
 'V26',
 'V27',
 'V28',
 'Amount',
 'Hours',
 'Fraudulent']

最终目标是创建一个显示每个特征系数的序列(由cols列表表示)

1 个答案:

答案 0 :(得分:3)

您的数组内部有一个数组。您有32个列值,但行数组的长度为1。因此,相应行和列的长度不匹配。相反,您需要的是内部数组,该数组的长度为32。您可以使用索引0访问它。

因此,请尝试以下操作:

pd.Series(data=a[0], index=cols)

如果您的数组中还有其他嵌套的数组,并且您不想使用多个索引,例如a[0][0]等,则可以使用两个选项中的任一个来展平数组

pd.Series(data=a.flatten(), index=cols)

pd.Series(data=a.ravel(), index=cols)