Python 为熊猫表演循环

Python 为熊猫表演循环,python,pandas,Python,Pandas,我的CSV如下所示: i,ix,iz,iy,u' 0,1,1,1,-0.8696748576752853 1,1,1,2,2.3557976585107454 2,1,1,3,0.47209618683697663 3,1,1,4,-1.930481713597933 4,1,1,5,-1.7868247414530511 5,1,1,6,-0.5603642778861779 6,1,1,7,0.24540750240253573 7,1,1,8,0.5505270314521304 8,1,

我的CSV如下所示:

i,ix,iz,iy,u'
0,1,1,1,-0.8696748576752853
1,1,1,2,2.3557976585107454
2,1,1,3,0.47209618683697663
3,1,1,4,-1.930481713597933
4,1,1,5,-1.7868247414530511
5,1,1,6,-0.5603642778861779
6,1,1,7,0.24540750240253573
7,1,1,8,0.5505270314521304
8,1,1,9,-0.1954277406567968
9,1,1,10,-1.3521265193776344
当ix、iy、iz中施加了某些条件时,如何从u'获得值?例如,我想对执行一个
,如下所示:

for iy in list1:
    for iz in list2:
        for ix in list3:
           U = 2*df.iloc[a,4] ## `a` is just a row resulted from the the for's combination.
此外,整个CSV有128^3行。这是在熊猫中执行循环的最佳方式?还有另一种更快的方法吗?

您可以这样做:

df[(df["ix"] == ix) & (df["iy"] == iy) & (df["iz"] == iz)]["u'"]
获取
系列
“u'
,其中其行满足
ix
/
iy
/
iz
条件。如果有多个
ix
/
iy
/
iz
条件,则可以将其放入for循环中。请注意,由于可能有多个行满足特定条件,因此会返回一个
系列

如果您只对某个特定值感兴趣(假设只有一行保证满足您的特定条件,那么您可以使用
[0]
为该
系列
编制索引


尽管有可能某个条件根本没有匹配的行,但在为其编制索引之前,您需要确保该系列的
len
>0

通常,条件语句可以这样编写:

df[
  (df['ix'] == ix) &
  (df['iy'] == iy) &
  (df['iz'] == iz)
]["u'"]
为了对上述列表中的项目进行迭代,您可以使用:


你能澄清一下
a
的来源吗?它是否与
iy
iz
ix
相关?只是由iy、iz和ix的值定义的位置。例如,如果iy=1、iz=1和ix=1,
a
应该是第一行。如果它们各自的
iy
,是否要获取所有
u'
iz
ix
包含在
list1
list2
list3
中。这些是索引列表吗?只是包含ix、iy、iz值的列表。在本例中,一个简单的范围(1128)。
for ix, iy, iz in itertools.product(list1, list2, list3):
    output = df[
      (df['ix'] == ix) &
      (df['iy'] == iy) &
      (df['iz'] == iz)
    ]["u'"]