Python 如何使用嵌套for循环和pandas';s iloc以定位具有1的行和列

Python 如何使用嵌套for循环和pandas';s iloc以定位具有1的行和列,python,pandas,dataframe,Python,Pandas,Dataframe,我对蟒蛇和熊猫比较陌生。我想复制一个战舰游戏。我的目标是定位包含1的行和列,并将该位置作为战列舰位置。我创建了一个CSV文件,看起来像这样 col0,col1,col2,col3,col4,col5 0,0,0,0,0,0 0,0,0,0,0,0 0,0,0,0,0,0 0,1,0,0,0,0 0,0,0,0,0,0 0,0,0,0,0,0 for x in range(len(df)): for y in range(len(df)): df.iloc[:,:]

我对蟒蛇和熊猫比较陌生。我想复制一个战舰游戏。我的目标是定位包含1的行和列,并将该位置作为战列舰位置。我创建了一个CSV文件,看起来像这样

col0,col1,col2,col3,col4,col5
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,1,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0 
for x in range(len(df)):
  for y in range(len(df)):
    df.iloc[:,:]    


这是将创建的CSV文件作为数据帧读取的代码

import pandas 

df = pandas.read_csv('/content/pandas_tutorial/My Drive/pandas/myBattleshipmap.csv',)
print(df)
如何使用nested for loop和Pandas的iloc来定位包含1的行和列(即第3行和第1列),并将该位置存储为战列舰位置

我发现一个嵌套的for循环和一个iloc可以使整个数据帧看起来像这样

col0,col1,col2,col3,col4,col5
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,1,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0 
for x in range(len(df)):
  for y in range(len(df)):
    df.iloc[:,:]    



我是否必须使用if语句来定位行和列?

使用
where
将所有非1的值转换为
NaN
,然后堆栈将留给您一个多索引序列,其索引将为您提供所有为1的值的(row\u label,col\u label)元组

df.where(df.eq(1)).stack().index
#MultiIndex([(3, 'col1')],
#           )

如果您不想要列名,也许可以去掉列标签。如果您只需要一个位置,我们可以使用
.item()


您确实不需要循环,您可以使用:

输出:

[3]
['col1']

对于像你尝试的循环。。。 输出:

Row: 3, Col: col1

谢谢你的快速回答!但是有没有办法将多重索引改为战舰位置,将“col1”改为1?我希望我的最终结果是这样的。战列舰位置:(3,1)@Loon一个选项是删除列标签,以支持范围索引,感谢快速回复和额外选项!非常感谢!谢谢你的快速回答,但我需要使用嵌套for循环和Pandas的iloc作为一项要求,我还没有开始学习如何使用NumPy。我刚刚看到了你的更新。感谢您的帮助和快速回复!真的很感激!
Row: 3, Col: col1