【发布时间】:2021-02-26 13:32:48
【问题描述】:
- 这必须使用矢量化方法,没有迭代
我想从 pandas 数据框创建一个 numpy 数组。
我的代码:
import pandas as pd
_df = pd.DataFrame({'itme': ['book', 'book' , 'car', ' car', 'bike', 'bike'], 'color': ['green', 'blue' , 'red', 'green' , 'blue', 'red'], 'val' : [-22.7, -109.6, -57.19, -11.2, -25.6, -33.61]})
item color val
book green -22.70
book blue -109.60
car red -57.19
car green -11.20
bike blue -25.60
bike red -33.61
大约有 12000 万行。
我需要创建一个 numpy 数组,例如:
item green blue red
book -22.70 -109.60 null
car -11.20 null -57.19
bike null -25.60 -33.16
每一行是项目名称,每一列是颜色名称。 项目和颜色的顺序并不重要。 但是,在 numpy 数组中,没有行名和列名,我需要为每个值保留项目和颜色名称,以便我知道该值在 numpy 数组中代表什么。
例如
how to know that -57.19 is for "car" and "red" in numpy array ?
所以,我需要创建一个字典来保持:
item <--> row index in the numpy array
color <--> col index in the numpy array
我不想使用 iteritems 和 itertuples,因为由于 How to iterate over rows in a DataFrame in Pandas 和 How to iterate over rows in a DataFrame in Pandas 和 Python Pandas iterate over rows and access column names 和 Does pandas iterrows have performance issues?,它们对于大型数据帧效率不高
我更喜欢 numpy 向量化解决方案。
如何有效地将 pandas 数据帧转换为 numpy 数组? 该数组也将转换为 torch.tensor。
谢谢
【问题讨论】:
标签: python pandas numpy dataframe pytorch