python—对for循环的理解
我在python代码中有以下行:python—对for循环的理解,python,pandas,Python,Pandas,我在python代码中有以下行: for tradeName, trade in data.iterrows(): ... “数据”是以下形式的数据帧: timestamp open high low close volume 2000-01-03 00:00:00 1481.50 1481.50 1480.50 1480.50 4 2000-01-03 00:30:00 1480.25 1480.50 1479.75 1
for tradeName, trade in data.iterrows():
...
“数据”是以下形式的数据帧:
timestamp open high low close volume
2000-01-03 00:00:00 1481.50 1481.50 1480.50 1480.50 4
2000-01-03 00:30:00 1480.25 1480.50 1479.75 1480.50 4
2000-01-03 01:00:00 1480.50 1481.50 1480.50 1481.25 7
我不明白for循环在这种情况下是如何工作的,尤其是对于tradeName的表达式,trade…
那些名字指的是什么?特别是它们不会出现在数据帧标题中,也不会在其他任何地方指定?商标名和商标只是自定义的“循环”变量,用于获取data.iterrows()将返回的相应值。TradName是索引,trade是索引的系列 以下各项应返回相同的结果:
for tradeName, trade in data.iterrows():
for x, y in data.iterrows():
for apple, orange in data.iterrows():
这里有两件事,第一件是解包,第二件是循环 您可以在元组中解压元素并按如下方式同时分配它们:
a,b,c = tuple([1,2,3])
print(b)
此外,如果您有一个元组的iterable,则可以按顺序解包每个元组
a = [1,2,3]
b = ['a','b','c']
for x,y in zip(a,b):
print(x)
print(y)
# to see what zip(a,b) is
print([i for i in zip(a,b)])
因此在循环中,iterable中的每个元组都被解压到这些变量中,并且在循环的每次迭代中都可用
这就解释了吗?您是否尝试在循环的顶部添加
print(tradeName,trade)
,以查看这些变量是什么?或者,您是否查看过:“以(索引、序列)对的形式迭代数据帧行。”小心iterrows
,如果您有一个大的数据帧,速度会非常慢itertuples
的速度要快得多,因为它不需要为每行数据构造一个Series对象。我不确定“dummy variable”是否是正确的术语。可能是“循环变量”。与其向OP询问iterrows()
的输出,不如描述什么是元组解包更有指导意义。然后OP将得到一个更一般的答案。下面是在循环顶部添加print(tradename,trade)返回的内容(Timestamp('2000-01-03 00:00:00')),开盘1481.50高1481.50低1480.50收1480.50卷4.00交易成交1459.25趋势-1.00净收益2512.50名称:2000-01-03 00:00:00,数据类型:float64)所以我想我现在可以弄清楚它们是什么。@Jimbasquit你同意输出看起来像数据帧索引值吗,然后是那一行的其余数据?由此我们可以假设tradeName
包含该行的索引值,trade
包含该行的数据(它恰好位于一个系列对象中)。