问题描述
在数据框的一列中,我对数据框的每一行都有以下得分:
[{'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]