我有一个pandas df列,每个公司名称都有一个字典列表。如下所示:
company | growth_scores
comp xyz | [{u'score': u'198', u'recorded_at': u'2016-09},{u'score': u'190', u'recorded_at': u'2016-08}
我理解如何提取密钥,并且我熟悉pd.apply方法,但我似乎无法将任何逐行扫描并执行计算的内容拼凑在一起。最终,我需要执行计算并将结果存储在每个公司的新列中。
输出应如下所示:
company | growth_score_diff
comp xyz | 10%
在这里会有一些指导!
答案 0 :(得分:1)
假设您有以下DataFrame:
df = pd.DataFrame.from_dict({'company': 'Pandology', 'metrics': [[{'score': 10}, {'score': 20}, {'score': 35}]]})
看起来像这样:
要计算总得分,您可以map
将metrics
列添加到名为score_total
的新列。要执行实际计算,您需要定义一个函数calculate_score
,它将一行metrics
数据作为输入并输出总分值。 (在这种情况下,它只是一个简单的和计算)
def calculate_score(metrics):
total_score = 0
for metric in metrics:
total_score += metric['score']
return total_score
df['score_total'] = df['metrics'].map(calculate_score)
现在您有一个包含结果的新列: