Python:如何快速堆叠数据框中某一列的所有数组?

标签 python arrays pandas numpy series

如何快速将一列的所有数组快速堆叠成一个大数组?

例如:

Dataframe['Binary_feature'][0] = array([[1,0,0,0,1]]) Dataframe['Binary_feature'][1] = array([[0,1,0,1,0]]) ...... Dataframe['Binary_feature'][i] = array([[0,1,0,1,0]])

如何将“Binary_feature”列中的所有数组堆叠到一个数组中,例如:

array([[1,0,0,0,1], [0,1,0,1,0], ... [0,1,0,1,0]])

最佳答案

您可以squeeze用于删除大小为 1 的维度的数组:

s = pd.Series([np.array([[1,0,0,0,1]]),
               np.array([[0,1,0,1,0]]),
               np.array([[0,1,0,1,0]])])

res = np.array(s.values.tolist()).squeeze()

array([[1, 0, 0, 0, 1],
       [0, 1, 0, 1, 0],
       [0, 1, 0, 1, 0]])

您会发现这比在您的系列上使用 np.vstack 更有效:

s = pd.concat([s]*10000)

assert (np.array(s.values.tolist()).squeeze() == np.vstack(s)).all()

%timeit np.array(s.values.tolist()).squeeze()  # 25.2 ms per loop
%timeit np.vstack(s)                           # 71.9 ms per loop
%timeit np.vstack(s.values)                    # 66.8 ms per loop

关于Python:如何快速堆叠数据框中某一列的所有数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51969234/

相关文章:

python - Pyramid 的 django-tables2 等效?

javascript - 我怎样才能使这个函数递归并删除这里的 for in 循环。我通过使用此函数得到 Maark、Maary 等的结果

mysql - 如何在 MySQL 中循环使用数组?

python - Pandas:将数据从列添加到另一个数据帧,直到特定时间结束

python - 在 pandas 数据框中使用 .count 计算日期时间

python - Windows 7 cmd,来自 Visual Studio,不显示 float

python - 为什么 Python 的 DB-API 中的连接没有 "begin"操作?

python - 需要字符串或 Unicode 类型,wxPython StaticText

java - 无法创建特定对象的数组并且无法正确使用compare to方法

Python Pandas 对齐单元格中的文本