仅当值不为空时创建JSON对象文本

jfgube3f  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(4851)

我写了一个脚本,通过API更新数据库中的一些字段。

fields = [{
              "fieldId": "101",                                       
              "fieldValues": [{"value": df["A"].item()}]},
                {   
              "fieldId": "102",                                       
              "fieldValues": [{"value": df["B"].item()}]},
                {   
              "fieldId": "103",                                        
              "fieldValues": [{"value": df["C"].item()}]},
                {   
              "fieldId": "104",                                        
              "fieldValues": [{"value": df["D"].item()}]},
                {   
              "fieldId": "105",                                        
              "fieldValues": [{"value": df["E"].item()}]
              }]

然后,我执行类似update = update_object(fields = fields)的操作来更新我希望更动态地创建fields的字段,这意味着如果(例如)df[“E”]不为空,则特定的fieldId/fieldValues只是fields的一部分。
我怎么能意识到这一点?

vjhs03f7

vjhs03f71#

像这样的东西?

import pandas as pd

df = pd.DataFrame([[42, None]], columns=['A', 'B'])
print(df)

印刷品

A     B
0   42  None

然后

id_key_pairs = [
    ('101', 'A'),
    ('102', 'B')
]

fields = [
    {
        'fieldId': field_id,
        'fieldValues': [{'value': df[k].item()}]
    } for field_id, k in id_key_pairs if df[k].item() is not None
]
print(fields)

印刷品

[{'fieldId': '101', 'fieldValues': [{'value': 42}]}]
d8tt03nd

d8tt03nd2#

这将是一个很好的列表解析的例子!在您的例子中,您可以使用类似下面的代码:

df_key_map = {101: “A”, 102: “B”, (etc…)}
fields = [
  {
    “fieldId”: id,
    “fieldValues”: [{“value”: df[key].item()}]
  }
  for id, key in df_key_map.items()
  if df[key].item() is not None

]

相关问题