如何在DataFrame中插入一行(列表)?

时间:2018-07-25 03:50:44

标签: python pandas

伙计们,

我有一个列定义的DataFrame和一个像这样的列表:

df = pd.DataFrame(columns=list('ABCDEF'))

[0.25, 1, [97, 99], array([18.,  16.,  17.]), array([ 31.,  30.,  29.]), array([ 0.])]

实际上,此列表中的每个元素都是我期望的DataFrame的一列,我想添加以下内容:

A       B         C                  D                    E             F
0.25    1   [97,99]  [18.,  16.,  17.]   [ 31.,  30.,  29.]         [ 0.]

然后我可以在while循环中插入列表,即在DataFrame中插入一行,例如在第二个循环中,我还有另一行:

[0.25,2,[132,134],array([17。]),array([29.,30.,31.]),array([15。,16。])]

A       B           C                  D                    E             F
0.25    1     [97,99]  [18.,  16.,  17.]   [ 31.,  30.,  29.]         [ 0.]
0.25    2   [132,134]              [17.]   [ 29.,  30.,  31.]    [15., 16.]

但是当我创建DataFrame时,它总是将数组中的元素放入一列:

                                0    A    B    C    D    E    F
0                            0.25  NaN  NaN  NaN  NaN  NaN  NaN
1                               1  NaN  NaN  NaN  NaN  NaN  NaN
2  [97.7123918594, 99.7123918594]  NaN  NaN  NaN  NaN  NaN  NaN
3  [17.0, 24.0, 18.0, 16.0, 17.0]  NaN  NaN  NaN  NaN  NaN  NaN
4              [31.0, 30.0, 29.0]  NaN  NaN  NaN  NaN  NaN  NaN
5                           [0.0]  NaN  NaN  NaN  NaN  NaN  NaN

任何方法都能得到我的期望吗?非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用.loc

In [324]: df = pd.DataFrame(columns=list('ABCDEF'))

In [325]: l1 = [0.25, 1, [97, 99], array([18.,  16.,  17.]), array([ 31.,  30.,  29.]), array([ 0.])]

In [326]: df.loc[len(df.index)] = l1

In [327]: df
Out[327]:
      A  B         C                   D                   E      F
0  0.25  1  [97, 99]  [18.0, 16.0, 17.0]  [31.0, 30.0, 29.0]  [0.0]

但是,如果您有预先列出的列表,则可以

pd.DataFrame([l1, l2, ..., ln], columns=list('abcdef'))