首页 > 解决方案 > 在遍历行并创建字典时过滤数据框列

问题描述

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

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'])但是当我还想返回密钥时,这只会返回我的值。

我怎样才能做到这一点?

标签: python-3.xpandas

解决方案


我写了这整件事只是为了意识到@anky_91 已经提出了建议。那好吧...

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'}]

推荐阅读