繁体   English   中英

将 dataframe 中的列的值循环到 Python 中的 function

[英]Looping values of a column in dataframe to a function in Python

我试图在 function 上运行一个循环(数据框中的列),它返回一个字典列表,并且应该将每个迭代的结果存储在一个单独的列表中,用于列中的每个值。

Example:

name id type
a     1 sol
b     2 sol
c     3 sol

我已经尝试了下面的代码,但我没有得到任何结果

for id in df:
    name_id = []
    name_id.append(getAct(67,id,'pow','gen'))


Output
    [{'status': 'success', 'message': 'success', 'data': []}]


def getAct(client_id, plant_id, tag_name, type_name):
    api_endpoint = ''

    today = datetime.date.today()

    headers = {'token': get_token()['access_token'],
               'Content-Type': 'application/json'}

    params = {'client_id': str(client_id),
              'from-date': str(today),
              'to-date': str(today),
              'tag': str(tag_name),
              'type': str(type_name),
              'plant-id': str(plant_id)
              }

    r = requests.post(url=api_endpoint, headers=headers, params=params)

    return r.json()

getAct function 的示例:

getAct(67,1,'pow','gen')

    [{'utc_time': '2020-05-01 14:51:54',
    'value': -0.02,
    'insert': '2020-05-01 20:31:16'},
   {'utc_time': '2020-05-01 14:52:51',
    'value': -0.02,
    'insert': '2020-05-01 20:31:21'}]

预计 Output

a_1 = [{'utc_time': '2020-05-01 14:51:54',
        'value': -0.02,
        'insert': '2020-05-01 20:31:16'},
       {'utc_time': '2020-05-01 14:52:51',
        'value': -0.02,
        'insert': '2020-05-01 20:31:21'}]
b_2 = [{'utc_time': '2020-05-01 14:51:54',
        'value': 4.02,
        'insert': '2020-05-01 20:31:16'},
       {'utc_time': '2020-05-01 14:52:51',
        'value': 4.02,
        'insert': '2020-05-01 20:31:21'}]
c_3 = [{'utc_time': '2020-05-01 14:51:54',
        'value': 6.9,
        'insert': '2020-05-01 20:31:16'},
       {'utc_time': '2020-05-01 14:52:51',
        'value': 7.3,
        'insert': '2020-05-01 20:31:21'}]

我是 Python 的新手。 请帮忙!

看来这可以满足您的要求:

import pandas as pd

df = pd.DataFrame([
    {'name': 'a', 'id': 1, 'type': 'sol'},
    {'name': 'b', 'id': 2, 'type': 'sol'},
    {'name': 'c', 'id': 3, 'type': 'sol'}
])
# showing this is the same as the data you shared in the example
print(df.to_string(index=False))


def dummy_getAct(client_id, plant_id, tag_name, type_name):
    return [
        {'utc_time': 'some date', 'value': 1, 'insert': 'some date'},
        {'utc_time': 'some date', 'value': 2, 'insert': 'some date'}
    ]


result = {i: dummy_getAct(67, i, 'pow', 'gen') for i in df['id']}
print(result)

结果:

name  id type
   a   1  sol
   b   2  sol
   c   3  sol
{1: [
    {'utc_time': 'some date', 'value': 1, 'insert': 'some date'}, 
    {'utc_time': 'some date', 'value': 2, 'insert': 'some date'}], 
 2: [{'utc_time': 'some date', 'value': 1, 'insert': 'some date'}, 
     {'utc_time': 'some date', 'value': 2, 'insert': 'some date'}], 
 3: [{'utc_time': 'some date', 'value': 1, 'insert': 'some date'}, 
     {'utc_time': 'some date', 'value': 2, 'insert': 'some date'}]}

所以,关键是:

result = {i: dummy_getAct(67, i, 'pow', 'gen') for i in df['id']}

您可以使用result[1]访问特定结果; 它只是一个以id为键的字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM