首页 > 解决方案 > Python嵌套循环熊猫数据框

问题描述

我有一个熊猫数据框。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([['2021-09-01', 88], ['2021-09-02', 55]]),
                   columns=['Date', 'Hours'])

我想构建多个 JSON 有效负载以根据 Dataframe 值调用外部 API。我目前正在尝试使用 Python 循环。

    payload = {
        "day": '2021-09-01', 
        "shopCapacity": 88 
        }

    payload = {
        "day": '2021-09-02', 
        "shopCapacity": 55
        }

使用..

for date in df['Date']:
   for hours in df['Hours']:

      payload = {"day": date, 
                 "shopCapacity": hours
                 }
      print(payload)

给我..

{'day': '2021-09-01', 'shopCapacity': '88'}
{'day': '2021-09-01', 'shopCapacity': '55'}
{'day': '2021-09-02', 'shopCapacity': '88'}
{'day': '2021-09-02', 'shopCapacity': '55'}

我想...

{'day': '2021-09-01', 'shopCapacity': '88'}
{'day': '2021-09-02', 'shopCapacity': '55'}

我知道嵌套循环给了我不想要的输出,但我找不到获得我需要的值的方法.. +

标签: python

解决方案


尝试:to_dict_orient='records'

>>> df.to_dict('records')
[{'Date': '2021-09-01', 'Hours': '88'}, {'Date': '2021-09-02', 'Hours': '55'}]
>>> 

您的代码不起作用的原因是因为您没有压缩值,而是迭代它们以创建组合,因此对于您的代码尝试:

for date, hours in zip(df['Date'], df['Hours']):    
    payload = {"day": date, 
               "shopCapacity": hours}
    print(payload)

输出:

{'day': '2021-09-01', 'shopCapacity': '88'}
{'day': '2021-09-02', 'shopCapacity': '55'}

推荐阅读