python - 如何在 DataFrame 中插入一行(列表)?
问题描述
伙计们,
我有一个列定义的 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
有什么办法可以得到我的期望?万分感激。
解决方案
您可以使用.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'))
推荐阅读
- c# - 使用安装时已存在的数据创建应用程序
- javascript - 如何将 React-Bootstrap 折叠功能添加到 Ant-Design
- 元素
- machine-learning - 如何使用 keras 深度学习对图像序列进行分类
- python - 具有重复条目的数据透视表,无需使用 scala 和 spark-sql 进行聚合/分组
- ios - UICollectioviewCell 内的 Uiview 的左下角和右下角半径问题
- angular - 动态更改表单控件验证并立即以角度反应形式应用新验证
- java - 清除应用数据后如何退出谷歌?
- image - 用来自另一个文件的 Base64 编码字符串替换电子邮件正文中的 cid:image 引用
- python - 在 for 循环中附加到 DataFrame
- c++ - 即使存在 MsiCloseHandle,是否也需要调用 MsiViewClose?