python - 迭代从 MYSQL 生成的嵌套循环
问题描述
我正在尝试遍历来自 MYSQL 的生成列表,如下所示:
result8 =[('January', 'Alexandria ', 2),
('January', 'Cairo', 2),
('February', 'Alexandria ', 1),
('March', 'Cairo', 1),
('March', 'Alexandria ', 1),
('April', 'Upper Egypt', 1),
('April', 'Alexandria ', 1),
('May', 'Alexandria ', 1),
('June', 'Delta ', 1),
('June', 'Alexandria ', 1),
('July', 'Giza', 1)]
首先,我尝试收集与同一个月相关的所有项目,就像在那之后绘制图表(matplotlib 中的堆积柱形图)
jan=['January']
feb=['February']
mar=['March']
apr=['April']
may=['May']
jun=['June']
july=['July']
aug=['August']
sept=['September']
october=['October']
nov=['November']
dec=['December']
我做了一个函数来迭代和附加不同的月份信息:
def seperated_month(j,month,my_list):
for i in result8:
if i[j] == month:
my_list.append(i[1])
my_list.append(i[2])
seperated_month(0, 'January', jan)
seperated_month(0, 'February', feb)
seperated_month(0, 'March', mar)
seperated_month(0, 'April', apr)
seperated_month(0, 'May', may)
seperated_month(0, 'June', jun)
seperated_month(0, 'July', july)
seperated_month(0, 'August', aug)
seperated_month(0, 'September', sept)
seperated_month(0, 'October', october)
seperated_month(0, 'November', nov)
seperated_month(0, 'December', dec)
这是 o/p :
['January', 'Alexandria ', 2, 'Cairo', 2]
['February', 'Alexandria ', 1]
['March', 'Alexandria ', 1, 'Cairo', 1]
['April', 'Upper Egypt', 1, 'Alexandria ', 1]
['May', 'Alexandria ', 1]
['June', 'Delta ', 1, 'Alexandria ', 1]
['July', 'Giza', 1]
['August']
['September']
['October']
['November']
['December']
现在应该收集 5 个列表信息:
alex =[]
cairo =[]
giza =[]
delta=[]
upper_egypt=[]
所以我收集了所有月份,开始迭代收集每个城市的信息:
all_list = [jan,feb,mar,apr,may,jun,july,aug,sept,october,nov,dec]
for i in all_list:
if all_list[i] == 'Cairo':
cairo.append(all_list[i+1]))
else:
cairo.append(int(0))
以及我收集所有月份的原因,以便在 12 个月内进行迭代,如果没有数据,它将被零替换。
但我不能做那个迭代,因为 all_list 变成了“嵌套列表”,我不能迭代每个项目。如果我使用嵌套 for 循环,索引将多于或少于 12 个月,具体取决于数据 insdie 的长度。
我的要求:是遍历 all_list 并根据“城市名称”获取附加信息,例如最后:
cairo = [2,0,1,0,0,0,0,0,0,0,0,0]
感谢你的帮助 !
解决方案
您应该为此任务使用适当的容器和模块,而不是使用几十个变量。
import pandas as pd
df = (pd.DataFrame(result8, columns=['month', 'city', 'value'])
.pivot(index='month', columns='city', values='value')
)
df.plot.bar(stacked=True)
输出:
month April February January July June March May
city
Alexandria 1.0 1.0 2.0 NaN 1.0 1.0 1.0
Cairo NaN NaN 2.0 NaN NaN 1.0 NaN
Delta NaN NaN NaN NaN 1.0 NaN NaN
Giza NaN NaN NaN 1.0 NaN NaN NaN
Upper Egypt 1.0 NaN NaN NaN NaN NaN NaN
推荐阅读
- react-native - 在 UIManager 中找不到“RNCWebView”
- caching - 如何设置 PageRules 以绕过对整个图像目录的缓存?
- android - 当用户应用程序在后台运行时如何显示通知?
- amazon-web-services - 设备可以通过谷歌云物联网上的网关相互共享数据吗?
- docker - 如何让我的 Maven Docker 映像在 Nexus 中查找它的依赖项/父项?
- c++ - C++ 联合成员对象不能分配给后期构造
- google-sheets - 如何将 google sheet 连接到 Amazon QuickSight?
- excel - 使用 vba 的直方图和其他统计函数
- reactjs - hidden-xs-down 不起作用 React bootstrap
- excel - 从范围复制行并拆分单元格值