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

时间:2020-09-14 22:03:40

标签: python pandas list dictionary multi-index

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

[{'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': 10}, {'score': 60, 'bonus': 0}, -40, -10]
[{'score': 100, 'bonus': 10}, {'score': 60, 'bonus': 0}, 10, 10]

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

2 个答案:

答案 0 :(得分:0)

我们可以做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)

答案 1 :(得分:0)

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

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