从用户输入中读取 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'
我是这个社区的新手,目前正在学习 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'