我是這個社區的新手,目前正在學習 Python。對于我的第一個小專案,我想請用戶輸入(元素周期表中的一個元素)并列印相應的屬性,例如名稱、數字和質量。
import pandas as pd
df = pd.read_excel(r'path\excelfile.xlsx')
Symbol = input('Input Symbol: ')
try:
value = df.index[df['Symbol']== Symbol].tolist()[0]
print(f'properties of {Symbol} are: ')
print("Element Name: ",df['Atomic_name'][value])
print("Element Number : ",df['Atomic_number'][value])
print("Element Mass : ",df['Atomic_weight'][value], "g/mol")
except IndexError:
print('Symbol not found')
對于 excel 檔案,我使用以下檔案:[https://easyupload.io/qrl7yu][1]
坦率地說,只有當您的輸入為“H”時,它才適用于第一個符號,從而產生以下輸出:
Input Symbol: H
properties of H are:
Element Name : Hydrogen
Element Number: 1
Element Mass : 1.01 g/mol
這正是我想要的,但是當我嘗試同一列“符號”中的符號時,它不起作用。我想讓它適用于所有符號。如何定義輸入的所有符號都來自同一列?我認為這與我定義 value = 的第 7 行有關。
Wixxix [1]:https ://easyupload.io/qrl7yu
uj5u.com熱心網友回復:
也許這對你有用:
import pandas as pd
df = pd.read_excel('LoCE.xlsx')
user_input = input('Input Symbol: ')
mask = df.loc[:, 'Symbol'] == user_input
df_mask = df.loc[mask, :]
print(df_mask)
uj5u.com熱心網友回復:
如果將 Symbol 列更改為 str 型別,則使用 df.str.contains 進行查詢即可:
df['Symbol']=df['Symbol'].astype(str)
df[df['Symbol'].str.contains("Li")]
uj5u.com熱心網友回復:
我認為您的代碼運行良好,問題在于包含額外空格的符號資料。您可以先在 excel 上使用 trim() 函式來清理空白區域,然后重試您的代碼。
例如,您將在引號和 Cr 之間的空格下方看到這會導致您的資料與用戶“Cr”的輸入不匹配
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315025.html
