Я абсолютный новичок. У меня проблема с нарезкой строки в файле Excel с использованием Python. Мой файл Excel содержит следующую информацию:
Column 1:
ordercode
PMC11-AA1L1FAVWJA
PMC21-AA1A1CBVXJA
PMP11-AA1L1FAWJJ
PMP21-AA1A1FBWJJ
PMP23-AA1A1FA3EJ+JA
PTP31B-AA3D1HGBVXJ
PTC31B-AA3D1CGBWBJA
PTP33B-AA3D1HGB1JJ
Я хочу нарезать строку в столбце «код заказа» в зависимости от того, является ли она
«PMC11» / «PMC21» / «PMP21» / «PMP11» / «PMP23» / «PTP31B» / «PTP33B» / «PTC31B» в другом положении и сохраните его в новом столбце «диапазон давления». В Excel я использовал приведенный ниже код, и он работал нормально:
=IF(OR(ISNUMBER(SEARCH("PMC11",A2)),ISNUMBER(SEARCH("PMC21",A2)),ISNUMBER(SEARCH("PMP11",A2)),ISNUMBER(SEARCH("PMP21",A2)),ISNUMBER(SEARCH("PMP23",A2))),MID(A2,11,2),MID(A2,12,2))
но в Python я использовал приведенную ниже кодировку, и она не работала должным образом.
Код Python:
import pandas as pd
#Assigning the worksheet to file
file="Stratification_worksheet.xlsx"
#Loading the spreadsheet
data= pd.ExcelFile(file)
#sheetname
print(data.sheet_names)
#loading the sheetname to df1
df=data.parse("Auftrag")
print(df)
#creating a new column preessurerange and slicing the pressure range from order code
for index,row in df.iterrows():
if "PMC11" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(10,12)
elif "PMC21" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(10,12)
elif "PMP11" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(10,12)
elif "PMP21" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(10,12)
elif "PMP23" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(10,12)
elif "PTP31B" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(11,13)
elif "PTP33B" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(11,13)
elif "PTC31B" in df.loc[index,"ordercode"]:
df["pressurerange"]=df["ordercode"].str.slice(11,13)
else:
df["pressurerange"]="NONE"
print(df.loc[:,["pressurerange"]])
break
Здесь он проверяет первое условие IF и нарезает строку в позиции (10,12) для всего столбца. Я знаю, что сделал ошибку в приведенном ниже коде. Но я не знаю, какой именно код использовать.
=df["pressurerange"]=df["ordercode"].str.slice(10,12)