【问题标题】:For Loop Throwing Me For A Loop [duplicate]For循环把我扔给一个循环[重复]
【发布时间】:2021-03-28 19:02:14
【问题描述】:

我有一个循环遍历数据框的长度并遍历团队列表。我的循环应该经过 41 行,但它只执行 2 行然后停止,我不知道它为什么会停止。在我看来,我应该循环浏览整个 41 支球队名单,但在索引了两支球队后就停止了。

import pandas as pd

excel_data_df = pd.read_excel('New_Schedule.xlsx', sheet_name='Sheet1', engine='openpyxl')

print(excel_data_df)
print('Data Frame Above')
yahoot = len(excel_data_df)
print('Length Of Dataframe Below')
print(yahoot)

for games in excel_data_df:
    yahoot -= 1
    print(yahoot)
    searching = excel_data_df.iloc[yahoot, 0]
    print(searching)
    excel_data_df2 = pd.read_excel('allstats.xlsx', sheet_name='Sheet1', engine='openpyxl')
    print(excel_data_df2)
    finding = excel_data_df2[excel_data_df2['TEAM:'] == searching].index
    print(finding)

这是运行日志

HOME TEAM:            AWAY TEAM:
0         Portland St.             Weber St.
1               Nevada             Air Force
2                 Utah                 Idaho
3         San Jose St.           Santa Clara
4        Southern Utah  SAGU American Indian
5        West Virginia              Iowa St.
6             Missouri          Prairie View
7    Southeast Mo. St.             UT Martin
8          Little Rock       Champion Chris.
9        Tennessee St.               Belmont
10         Wichita St.           Emporia St.
11           Tennessee        Tennessee Tech
12                FGCU          Webber Int'l
13    Jacksonville St.      Ga. Southwestern
14       Northern Ill.           Chicago St.
15  Col. of Charleston         Western Caro.
16        Georgia Tech           Florida A&M
17               Rider                  Iona
18               Tulsa      Northwestern St.
19        Rhode Island              Davidson
20      Washington St.           Montana St.
21             Montana         Dickinson St.
22       Robert Morris         Bowling Green
23        South Dakota                 Drake
24            Richmond        Loyola Chicago
25    Coastal Carolina           Alice Lloyd
26        Presbyterian    South Carolina St.
27        Morehead St.                  SIUE
28       San Diego St.                   BYU
29               Siena              Canisius
30            Monmouth         Saint Peter's
31              Howard               Hampton
32           App State        Columbia Int'l
33       Southern Ill.          North Dakota
34         Norfolk St.                  UNCW
35             Niagara             Fairfield
36            N.C. A&T            Greensboro
37       Western Mich.         Central Mich.
38              DePaul                Xavier
39         Georgia St.                Carver
40      Northern Ariz.         Eastern Wash.
41        Gardner-Webb                   VMI
Data Frame Above
Length Of Dataframe Below
42
41
Gardner-Webb
                TEAM:  TOTAL POINTS:  ...  TURNOVER RATIO:  ASSIST TO TURNOVER RANK
0     Mount St. Marys            307  ...               65                    239.0
1       Saint Josephs            163  ...               28                     81.0
2    Saint Marys (CA)            518  ...               78                    114.0
3        Saint Peters            399  ...               86                    145.0
4     St. John's (NY)            656  ...              115                     73.0
..                ...            ...  ...              ...                      ...
314           Wofford            327  ...               54                    113.0
315        Wright St.            220  ...               47                    206.0
316           Wyoming            517  ...               64                     27.0
317            Xavier            582  ...               84                     12.0
318    Youngstown St.            231  ...               30                     79.0

[319 rows x 18 columns]
Int64Index([85], dtype='int64')
40
Northern Ariz.
                TEAM:  TOTAL POINTS:  ...  TURNOVER RATIO:  ASSIST TO TURNOVER RANK
0     Mount St. Marys            307  ...               65                    239.0
1       Saint Josephs            163  ...               28                     81.0
2    Saint Marys (CA)            518  ...               78                    114.0
3        Saint Peters            399  ...               86                    145.0
4     St. John's (NY)            656  ...              115                     73.0
..                ...            ...  ...              ...                      ...
314           Wofford            327  ...               54                    113.0
315        Wright St.            220  ...               47                    206.0
316           Wyoming            517  ...               64                     27.0
317            Xavier            582  ...               84                     12.0
318    Youngstown St.            231  ...               30                     79.0

[319 rows x 18 columns]
Int64Index([180], dtype='int64')

【问题讨论】:

  • for games in excel_data_df.iterrows() ??? here
  • 将其添加为解决方案,为我工作!谢谢!我以为我在另一个程序中运行了它,我从那里偷了它,但是一旦你发布该实例就意识到它只索引单个用户输入而不是数据框。谢谢!!荣誉...任何想法为什么它做了两个?
  • 请提供预期的minimal, reproducible example。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。
  • include a minimal data frame 作为您的 MRE 的一部分。
  • @CrazyChucky,确实如此,谢谢。可能应该搜索更多,当我提到我认为我在其他地方有这个工作时,我快疯了。谁能回答为什么它跑了两次? :)

标签: python pandas dataframe


【解决方案1】:

请改用:for i in index,data in excel_data_df.iterrrows()

pandas.DataFrame.iterrows

DataFrame.iterrows() 以 (index, Series) 对的形式迭代 DataFrame 行。

【讨论】:

  • Ew,毛。请不要鼓励 iterrows,它是一种反模式并且会促进不良做法,see here
  • 他是新手。列表理解会让他迷惑一阵子。这就是为什么建议这样做。
猜你喜欢
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多