Python 将数组中的数据分组到子数组中
我有一套excel表格中的100行数据。该表由4列组成[日期、出站设施#、目的地Lat、目的地Lon] 我可以在整个数组中将日期索引和分组到两个数组中(因为每天都会记录数据,并且日期已经聚集在一起),但我的问题是因为出站设施是随机的,我需要一种方法将目标(Lat,Lon)分组到每个出站设施的数组中 理想情况下,我希望能够有一个数组,在这个数组中我可以调用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
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。