Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数组中的数据分组到子数组中_Python_Arrays_Excel_Grouping - Fatal编程技术网

Python 将数组中的数据分组到子数组中

Python 将数组中的数据分组到子数组中,python,arrays,excel,grouping,Python,Arrays,Excel,Grouping,我有一套excel表格中的100行数据。该表由4列组成[日期、出站设施#、目的地Lat、目的地Lon] 我可以在整个数组中将日期索引和分组到两个数组中(因为每天都会记录数据,并且日期已经聚集在一起),但我的问题是因为出站设施是随机的,我需要一种方法将目标(Lat,Lon)分组到每个出站设施的数组中 理想情况下,我希望能够有一个数组,在这个数组中我可以调用t[0][0],python在第1天返回出站设施1的所有目标Lat/Lon file_location = "C:\Users\PythonPr

我有一套excel表格中的100行数据。该表由4列组成[日期、出站设施#、目的地Lat、目的地Lon]

我可以在整个数组中将日期索引和分组到两个数组中(因为每天都会记录数据,并且日期已经聚集在一起),但我的问题是因为出站设施是随机的,我需要一种方法将目标(Lat,Lon)分组到每个出站设施的数组中

理想情况下,我希望能够有一个数组,在这个数组中我可以调用
t[0][0]
,python在第1天返回出站设施1的所有目标Lat/Lon

file_location = "C:\Users\PythonPractice.xlsx"

OFs = 4
with xlrd.open_workbook(file_location) as workbook:
    sheet = workbook.sheet_by_index(0)

    Dates = (sheet.cell_value(i,0) for i in range(sheet.nrows))
    Day = [list(group) for key, group in itertools.groupby(Dates)]

d = []

for i in range(sheet.nrows):      
    DC = sheet.cell(i,1).value
    Lat = sheet.cell(i,2).value
    Lon = sheet.cell(i,3).value
    d.append([OF,Lat,Lon])

t = []
for i in range(2):
    T = [d[j:j+len(Day[i])] for j in range(0,len(Day),len(Day[i]))]         
    t.append(T)
下面是excel文件的摘录

Date OF Lat Lon
1   1   1   100
1   2   2   99
1   3   3   98
1   4   4   97
1   1   5   96
1   2   6   95
1   3   7   94
1   4   8   93
1   1   9   92
1   2   10  91
1   3   11  90
1   4   12  89
2   3   51  50
2   4   52  49
2   1   53  48
2   2   54  47
2   3   55  46
2   4   56  45
2   1   57  44
2   2   58  43
2   3   59  42
2   4   60  41
2   1   61  40
因此,在这种情况下,第1-4列是[日期,OF,Lat,Lon]

我真的很想把每件事都按日期分组,然后再分类。我希望打印t时它看起来像这样:

[[[[1,100],
   [5, 96],
   [9, 92]],
  [[2, 99],
   [6, 95],
   [10,91]],
  [[3, 98],
   [7, 94],
   [11,90]],
  [[4, 97],
   [8, 92],
   [12,89]]],
 [[[53,48],
   [57,44],
   [61,40]],
  [[54,47],
   [58,43]],
  [[51,50],
   [55,46],
   [59,42]],
  [[52,49],
   [56,45],
   [60,41]]]]
你考虑过吗?他们有一些很好的构建数据帧的方法,可以让你抓取大量数据,过滤数据,可视化数据,等等

对于您的示例(根据我收集的信息),您可以执行以下操作:

import pandas as pd
df = pd.read_excel('my_excel_file.xls')
然后当你需要具体信息的时候

mask = (df['Date'] == some_date) & (df['Outbound Facility'] == some_outbound)
filtered_df = df[mask]

filtered_df
将是一个新的数据帧,仅包含符合您标准的数据。如果您发布一个示例文件,我可以确保此代码是兼容的,但应该非常简单

您可以发布几行输入文件,并使用该输入数据发布一个您希望输出的示例吗?使用两行输入文件调试打印
T,Day,日期…
out。我继续添加了excel摘录。熊猫是一个很棒的模块。我以前没见过它。我唯一的问题是如何将这些值放入数组中,以便在以后的计算中使用它们?我知道df[mask]显示了所有匹配的值和它们各自的行号,但是有没有办法用pandas存储上述数据?@JacCook我恐怕不明白你的问题。您的意思是存储来自
掩码的信息吗?如果你是这样的话,答案是肯定的,你可以用它做很多事情
pandas
内置了将数据帧写入csv、excel、txt等的功能。您还可以从中获取原始
numpy
数组。如果你详细说明你对什么感到困惑以及你想对数据做什么,我可以更清楚地回答你。我编辑了原始帖子,在代码输出中包含了我想要的更深入的概要。我需要首先按日期对数据进行分组。然后,我需要在日期内再次将数据分组到出站设施中。这样,当我调用t[0][0]时,它将显示第一天和第一个出站设施的所有目标Lat/Lon。