錯誤訊息截圖我是 Python 的新手,我需要為 excel 決議創建一個嵌套回圈。我有一個包含 4 列ID、型號、零件號、零件描述、年份的電子表格,我需要一個決議器來遍歷每一行并以以下格式回傳:零件號,豐田 > 型號 > 年份 | Toyota > Model > Year etc...所以零件號只回傳一次列出所有多個配件型號和年份。我能夠通過下面的代碼實作相同的目的,但它沒有切換到第二部分零件號
import pandas as pd
import xlrd
workbook = pd.read_excel('Query1.xls')
workbook.head()
i = 0
l = int(len(workbook))
a = workbook['Part Number'].iloc[i]
while i < l:
b = 0
c = workbook['Part Number'].iloc[b]
print(a)
while c == a:
#print(c)
print(b, 'TOYOTA >', workbook['Model'].iloc[b], ' > ', workbook['Year'].iloc[b], ' | ', end = ' ')
b = b 1
print()
i = i b
uj5u.com熱心網友回復:
您的代碼陷入無限回圈,因為您在c遍歷行時沒有更新值。以下是您如何更好地實作這一點:
part_number_group = None
for i in range(len(df)): # or `for i, row in df.iterrows():`
part_number = df.loc[i, "Part Number"]
if part_number != part_number_group:
if part_number_group is not None:
print()
print(part_number)
part_number_group = part_number
print(i, 'TOYOTA >', df.loc[i, 'Model'], ' > ', df.loc[i, 'Year'], ' | ', end = ' ')
但是,您應該使用groupby,這樣就完全不需要遍歷行了:
df["Model-Year"] = df.index.astype(str) " TOYOTA > " df["Model"] " > " df["Year"].astype(str)
for part_number, group in df.groupby("Part Number"):
print(part_number)
print(*group["Model-Year"], sep=" | ")
uj5u.com熱心網友回復:
嘗試重用您的一些代碼,您可以使用 for 回圈遍歷所有唯一的零件號。For 回圈使您更容易避免陷入無限回圈,因為您預先指定了開始和停止條件。然后您可以查詢具有相同零件號的所有條目,并使用您建議的列印功能列印它們:
import pandas as pd
import xlrd
workbook = pd.read_excel('Query1.xls')
for num in pd.unique(workbook["Part Number"]):
print('\n', num)
part_df = workbook.query("`Part Number` == @num")
for i in range(len(part_df)):
print(i, 'TOYOTA >', part_df['Model'].iloc[i], ' > ', part_df['Year'].iloc[i], ' | ', end=' ')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537782.html
標籤:Python熊猫解析
上一篇:BOOST_FUSION_ADAPT_STRUCT使用帶有std::vector<self_type>成員的遞回結構
下一篇:從字串中決議長格式日期
