我正在尝试根据某些条件从DataFrame结构中选择一个条目。它有效-只要有一个适合查询的条目即可(以下代码中的第一个示例)
但是有时没有正确的输入项,因此返回值应该是一个空字符串(不是错误消息)。我无法实现。
from pandas import DataFrame
data = {'ID': [1, 1, 2, 2],
'Key': ['Key1','Key2','Key1','Key2'],
'Value': ['Value1', 'Value2', 'Value3', 'Value4']
}
df = DataFrame(data,columns= ['ID', 'Key','Value'])
print(df.loc[(df['ID']==1) & (df['Key'] == 'Key2')].iloc[-1,-1])
# shows "Value2" (correct)
print(df.loc[(df['ID']==1) & (df['Key'] == 'Key3')].iloc[-1,-1])
# should show "" (desired output)
谢谢。
答案 0 :(得分:2)
以下内容可满足您的需求:
keyname = 'Key2' # Key3
try:
print(df.loc[(df['ID']==1) & (df['Key'] == keyname)].iloc[-1,-1])
except IndexError:
print("")
答案 1 :(得分:1)
使用可检查的遮罩更明确地尝试此操作。
mask = (df['ID']==1) & (df['Key'] == 'Key3')
if mask.any():
print(df[mask].Value.iloc[0])
else:
print("")