从熊猫词典列表中提取元素

问题描述

在数据框的一列中,我对数据框的每一行都有以下得分:

[{'score': 100,'bonus': 10},{'score': 60,'bonus': 0}]
[{'score': 80,'bonus': 20},{'score': 90,'bonus': 30}]

输出

输出将是两行,分别用于更改得分和奖金。因此,第一行的df.delta_score = -40和df.delta_bonus = -10,第二行的df.delta_score = 10和df.delta_bonus = 10。

[{'score': 100,'bonus': 0},-40,-10]
[{'score': 100,10,10]

我想计算每个人(行)的得分和奖金的值变化,并生成具有结果值的新列。我对这种数据类型非常困惑,因为它似乎是字典列表,但是由于每个字典都有相同的键,因此我想使用运算符来计算差异。任何帮助将不胜感激。

解决方法

我们可以做explode然后得到数据框

s = df['Col'].explode()
calcu = pd.DataFrame(s.tolist(),index=s.index)
calcu
Out[170]: 
   score  bonus
0    100     10
0     60      0
1     80     20
1     90     30

在此之后您可以做

calcu.groupby(level=0)...(calculation follow by groupby)
,

我们将简单地创建两个新列gsutil ls -l gs://my-bucket/some-prefix/** Bonus。您可以将列表理解与Score结合使用,以根据键.get()bonus检索值。然后,通过订阅score并减去[1]

,从第一个值中减去第二个值
[0]