[英]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.