python—对for循环的理解

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

我在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 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
包含该行的数据(它恰好位于一个系列对象中)。