python - 从 numpy 数组列表构建 Pandas 数据框

标签 python pandas dataframe

我想知道是否有一种简单的方法可以完成从 numpy 数组列表生成 pandas DataFrame 的明显任务,其中列是数组。默认行为似乎让数组成为行,我完全不明白为什么。这是一个简单的例子:

names = ['data1', 'data2', 'data3']
data = [np.arange(10) for _ in names]
df = pd.DataFrame(data=data, columns=names)

这会出错,表明 pandas 需要 10 列。

如果我这样做

df = pd.DataFrame(data=data)

我得到一个包含 10 列和 3 行的 DataFrame。

鉴于将行追加到 DataFrame 中通常比将列追加困难得多,我想知道这种行为,例如假设我很快想将第 4 个数据数组放入 DataFrame 我希望数据按列组织

df['data4'] = new_array

如何快速构建我想要的 DataFrame?

最佳答案

正如@MaxGhenis 在评论中指出的那样,from_itemsdeprecated as of version 0.23 .该链接建议改用 from_dict,因此可以将旧答案修改为:

pd.DataFrame.from_dict(dict(zip(names, data)))

-------------------------------------------- ---老答案-------------------------------------------- ------------------

我会使用 .from_items :

pd.DataFrame.from_items(zip(names, data))

给出

  data1  data2  data3
0      0      0      0
1      1      1      1
2      2      2      2
3      3      3      3
4      4      4      4
5      5      5      5
6      6      6      6
7      7      7      7
8      8      8      8
9      9      9      9

这也应该比转置更快:

%timeit pd.DataFrame.from_items(zip(names, data))

1000 loops, best of 3: 281 µs per loop

%timeit pd.DataFrame(data, index=names).T

1000 loops, best of 3: 730 µs per loop

然后添加第四列也相当简单:

df['data4'] = range(1, 11)

给出

  data1  data2  data3  data4
0      0      0      0      1
1      1      1      1      2
2      2      2      2      3
3      3      3      3      4
4      4      4      4      5
5      5      5      5      6
6      6      6      6      7
7      7      7      7      8
8      8      8      8      9
9      9      9      9     10

正如@jezrael 在评论中提到的,第三种选择是(注意:不保证订单)

pd.DataFrame(dict(zip(names, data)), columns=names)

时间:

%timeit pd.DataFrame(dict(zip(names, data)))

1000 loops, best of 3: 281 µs per loop

关于python - 从 numpy 数组列表构建 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42952672/

相关文章:

python - 将新索引添加到 MultiIndex 数据框 pandas 的特定级别

python - 从另一个数据帧更新数据帧不起作用

r - 行/列的最佳排序以减小 R data.frame 对象的大小

python - 用 Python 编写的 HTML 缩进器

python - 将函数应用于数据框列

python - 在GAE中使用python上传blob数据

python - 根据 Pandas 中的多个条件和 groupby 执行列内匹配值的累积计数

pandas - 使用 pandas dataframe group agg 函数

python - 尝试使用 gpu 导入 tensorflow 时导入错误

python - 如何在不明确接受的情况下让自己进入 Python 方法