数据:
Person Time
1 person1 20
2 person1;person2 60
3 person2;person3 100
我有一个计算单个值的代码:
df['Person'].str.split(";", expand=True).stack().value_counts()
但是,我想更进一步,将 df 中每个人的所有时间值相加。输出应该是:
person1 - 80
person2 - 160
person3 - 100
最佳答案
使用DataFrame.explode
通过分割值和聚合sum
重新分配列Person
:
out = (df.assign(Person=df['Person'].str.split(";"))
.explode('Person')
.groupby('Person', as_index=False)
.sum())
print (out)
Person Time
0 person1 80
1 person2 160
2 person3 100
关于python - pandas df 列中的多个值并对另一列值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77171827/