假设我使用的客户端计算机不允许pip或pandas,并且必须使用python2.7。不允许二进制文件和转换为exe。我正在读一个CSV,列标题是numpy的名字。你知道吗
在我的数据集中,我试图生成一个订单列表,该列表应用于设施、目的地、程序#和其他因素的独特组合,其中p是read csv数据集。你知道吗
What it would look like if I did this in Excel.Order字段中的值是我希望在名为my\u 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'])
接下来的方法最初是用熊猫和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\u cond变量显然有错误的语法。你知道吗
如果这是在SQL中,我只会说“从我的数据中选择订单,其中progs=a&reqs=r;”以此类推。你知道吗
我也考虑过列表理解,但它也不起作用:
list(x for p['Orders'] in p if p['Orders'] in Order_cond)
同样,目标是创建一个订单列表,并将其存储在我的订单中,然后我将其用于其他函数。你知道吗
所以您想从csv文件中选择与特定列的特定值相对应的行?在Python2.7中是这样吗?好吧,这对2.7来说并不难
使用csv.DictReader您会发现这是最简单的,它将csv文件读取为字典行,其中键对应于每行的列标签。然后,给定要为其选择的键和值对的字典,下面的代码将返回一个适合您需要的字典数组。如果您想去掉键值对,只需要值的数组this is trivially implemented。因为您可以将csv文件转换为字典列表,所以这就变成了selecting a dictionary from an array with certain values for keys的问题
选定的行现在应该具有
A:至少每个键都在所选的\键\值中,并且
B:与这些键相关的值是相同的。你知道吗
我还没有完全了解您的嵌套if代码,但这里有一种方法可以识别满足特定条件的结构化数组中的记录
制作一个包含3个字段的示例数组:
测试一个字段:
另一个具有多个匹配项的字段:
结合多个现场测试:
或者走sql路线:
data
的元素看起来就像一个元组;因此插入很简单。你知道吗这个例子需要更清晰一些,但它给出了可能的大致概念。你知道吗
相关问题 更多 >
编程相关推荐