我导入了一个包含我的数据的 .json 列表,将其转换为字典列表。
键是列标题。对于某个键的给定值,我想获取同一字典中另一个键的值。
data = [
{
"Nr.": 2,
"Table data": "S - Sulfur",
"Ref.": 571,
"Formula": "S",
"Name": "Sulfur",
},
{
"Nr.": 3,
"Table data": "HF - Hydrogen Fluoride",
"Ref.": 556,
"Formula": "HF",
"Name": "Hydrogen Fluoride",
},
{
"Nr.": 4,
"Table data": "N2 - Nitrogen",
"Ref.": 5,
"Formula": "N2",
"Name": "Nitrogen",
},
]
例如,给定用户输入“氮”,我想检索键“公式”的值,即“N2。
我会将字典列表转换为数据框,然后使用查找方法。
import pandas
data = pandas.read_json("file.json")
df = pandas.DataFrame(data,
columns=('Nr.', 'Table data','Ref','Formula','Name'))
df['Formula'] = df.lookup(df.index,df['Nitrogen'])
但是,将字符串与此数据框中的值匹配似乎每次都会给出 KeyError。
答案 0 :(得分:0)
您可以在数据框中的特定列上使用 str.match,例如,
s= input()
df["Table data"].str.match(f".*{s}.*")
答案 1 :(得分:0)
如果要将列值与多个元素进行匹配,则可以使用 isin
:
df = pandas.DataFrame(data,
columns=('Nr.', 'Table data','Ref','Formula','Name'))
inp_list = ['Nitrogen', 'Sulfur']
out = df[df.Name.isin(inp_list)]
print(out['Formula'])
输出:
0 S
2 N2
另外,请注意 DataFrame.lookup
已被弃用,您应该改用 DataFrame.melt
和 DataFrame.loc
。