我有一个测试数据框,如下所示
test
Out[93]:
ID1 ID2 Value sometext1 sometext2
0 A A 22 hello bla
1 B A 44 hello bla
2 C B 77 hello bla
3 A B 44 hello bla
4 B C 33 hello bla
5 C C 66 hello bla
test_grouped=test.groupby(['ID1','ID2']).sum().reset_index()
test_grouped
Out[97]:
ID1 ID2 Value
0 A A 22
1 A B 44
2 B A 44
3 B C 33
4 C B 77
5 C C 66
我的问题如下:
有没有办法让sometext1和sometext2的值也分组到test_中,而不必进行合并?我可以用groupby语句直接完成这个任务吗?问题很明显,sometext1和sometext2不能相加。但在我的例子中,它们总是包含相同的值,所以毫无疑问它应该具有哪个值,因为它总是hello或bla。
最佳答案
如果您知道对于给定的ID1和ID2集合,sometext1和sometext 2将始终相同,那么您可以执行以下操作。
test_grouped = test.groupby(['ID1','ID2','sometext1','sometext2']).sum().reset_index()
以上是一个清晰、简单的解决方案,但是它不被认为是最佳实践,因为在您出错的可能性很小的情况下(对于同一组ID1和ID2,sometext1和sometext2可能不同),然后您为ID1和ID2创建重复的条目。如果这可能是一个问题,你可以采取一些方法,取决于你想如何处理它,但我相信你需要合并在任何情况下。例如,对于给定的ID1和ID2集,可以取sometext1的最大值。或者可以收集sometext1的所有值并将其存储为数组。
关于python - Pandas groupby带有不应该加总的文本项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35303674/