从用户输入中读取 python 中的 excel 值

Reading excel values in python from user input

我是这个社区的新手,目前正在学习 Python。对于我的第一个小项目,我想要求用户输入(来自周期性 table 的元素)并打印相应的属性,例如名称、数字和质量。

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

这正是我想要的,但是当我尝试来自同一列 'Symbol' 的符号时,它不起作用。我想让它适用于所有符号。如何定义输入的所有符号都来自同一列?我认为这与我定义 value =.

的第 7 行有关

Wixxix [1]: https://easyupload.io/qrl7yu

也许这对你有用:

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)

如果将Symbol列改为str类型, 然后使用 df.str.contains 查询它有效:

df['Symbol']=df['Symbol'].astype(str)
df[df['Symbol'].str.contains("Li")]

我认为您的代码运行良好,问题在于包含额外 space 的符号数据。您可以先在 excel 上使用 trim() 函数来清理空的 space,然后重试您的代码。

例如,您将在下方看到引号和 Cr 之间的 space 这导致您的数据与用户输入不匹配 'Cr'