【发布时间】:2017-08-24 16:03:47
【问题描述】:
假设我正在使用不允许 pip 或 pandas 并且必须使用 Python 2.7 的客户端计算机。二进制文件和转换成 exe 是不允许的。我正在阅读 CSV,其中列标题为 numpy 的名称。
在我的数据集中,我试图生成一个订单列表,这些订单适用于设施、目的地、项目编号和其他因素的独特组合,其中 p 是读取的 csv 数据集。
What it would look like if I did this in Excel. Order 字段中的值是我希望在名为 my_orders 的变量中作为列表的值。
我当前的代码如下:
progs = np.unique(p['Program'])
facil = np.unique(p['Facility'])
dest = np.unique(p['Destination'])
reqs = np.unique(p['Requested'])
prods = np.unique(p['Produced'])
tier1 = np.unique(p['Tier1'])
tier2 = np.unique(p['Tier2'])
接着是下面的方法,最初是用 pandas 和 Python3 编写的,直到发现只有 2.7 和 numpy 可用:
for a in range(len(progs)):
print("on Program ",a)
ProgChild = {"name":progs[a], 'children':[]}
for r in range(len(reqs)):
reqChild = {"name":reqs[r], 'children':[]}
for s in range(len(prods)):
prodChild = {'name':prods[s], "children":[]}
for g in range(len(progs)):
programChild = {'name':progs[g], "children":[]}
for i in range(len(facil)):
FacilChild={"name":facil[i], "children":[]}
for c in range(len(tier1)):
Tier1Child={"name":tier1[c], "children":[]}
for d in range(len(tier2)):
# here's where I'm in trouble:
Order_Cond = np.array[[progs[a]& reqs[r]&
prods[s]&progs[g]& facil[i]& tier1[c]]
my_orders = np.where(p['Orders'], Order_cond)
print my_orders
# do other things
如您所见,最初的意图是使用 For 循环来设置一个例程,该例程仅返回来自设施、目的地、程序等的唯一组合的订单列表。Order_cond 变量显然有错误的语法.
如果这是在 SQL 中,我只会说“从 My_Data 中选择订单,其中 progs=a & reqs=r;”等等。
我也考虑过列表推导,但它也不起作用:
list(x for p['Orders'] in p if p['Orders'] in Order_cond)
同样,目标是创建一个订单列表并将其存储在 my_orders 中,然后我将其用于其他功能。
【问题讨论】:
-
您能否给出一个实际的 CSV 示例,而不仅仅是一个 png?
-
对于这种访问,在 SQL 中加载这些数据可能更简单。遍历数组的行(元素)并将它们写入数据库应该不难。在stackoverflow.com/a/35184195/901925 中,我说明了从 sql 加载结构化数组。另一个方向应该很容易。或在这里:stackoverflow.com/questions/32770340/…
-
顺便说一句,这不是列表推导式,而是您将其具体化为列表的生成器表达式。不过,您应该只使用列表理解。
标签: python python-2.7 numpy