在遍历行并创建字典时过滤数据框列

时间:2020-02-18 17:55:33

标签: python-3.x pandas

我在电子表格中具有以下数据表:

Name    Description Value
foo     foobar      5
baz     foobaz      4
bar     foofoo      8

我正在阅读电子表格,并将数据作为数据框传递。

我需要按照特定的架构将此数据表转换为json。

我有以下脚本:

for index, row in df.iterrows():
    if row['Description'] == 'foofoo':
            print(row.to_dict())

返回:

{'Name': 'bar', 'Description': 'foofoo', 'Value': '8'}

我希望能够过滤出特定的列。例如,返回以下内容:

{'Name': 'bar', 'Description': 'foofoo'}

我知道我只能使用此print(row['Name'],row['Description'])打印我想要的列,但是,这仅在我还想返回键时才返回值。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

我写这本书的全部目的只是为了意识到@anky_91 had already suggested it。哦,好吧...

import pandas as pd

data = {
    "name": ["foo", "abc", "baz", "bar"],
    "description": ["foobar", "foofoo", "foobaz", "foofoo"],
    "value": [5, 3, 4, 8],
}

df = pd.DataFrame(data=data)

print(df, end='\n\n')

rec_dicts = df.loc[df["description"] == "foofoo", ["name", "description"]].to_dict(
    "records"
)

print(rec_dicts)

输出:

  name description  value
0  foo      foobar      5
1  abc      foofoo      3
2  baz      foobaz      4
3  bar      foofoo      8

[{'name': 'abc', 'description': 'foofoo'}, {'name': 'bar', 'description': 'foofoo'}]

答案 1 :(得分:1)

转换为字典后,您可以使用以下命令删除不需要的密钥:

del(row[value])

现在词典将仅具有名称和描述。

答案 2 :(得分:0)

您可以尝试以下方法:

@sumLowerGrades

结果:

set @sumLowerGrades = sum(select TOP 2 grades.grade from grades
        where grades.studentno = 1 order by grade ASC)
相关问题