【问题标题】:How to insert a row (list) into DataFrame ?如何在 DataFrame 中插入一行(列表)?
【发布时间】:2019-01-01 18:42:06
【问题描述】:

伙计们,

我有一个列定义的 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], 数组([17.]), 数组([29., 30., 31.]), 数组([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

有什么办法可以达到我的预期?真的很感激。

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以使用.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'))

【讨论】:

  • 是的,我打败了它,非常好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
相关资源
最近更新 更多