Python 使用不应求和的文本项创建groupby
我有一个测试数据框,如下所示Python 使用不应求和的文本项创建groupby,python,pandas,group-by,Python,Pandas,Group By,我有一个测试数据框,如下所示 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 bl
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。如果您知道sometext1和sometext2对于给定的ID1和ID2集总是相同的,那么您可以执行以下操作
test_grouped = test.groupby(['ID1','ID2','sometext1','sometext2']).sum().reset_index()
以上是清晰、简单的解决方案,但这不是最佳做法,因为如果您有可能出错(对于同一组ID1和ID2,sometext1和sometext2可能不同),那么您将为ID1和ID2创建重复条目。如果这可能是一个问题,根据您想要如何处理它,您可以采取一些方法,但我相信您在任何情况下都需要合并。例如,对于给定的ID1和ID2集,可以取sometext1的最大值。或者您可以收集sometext1的所有值并将其存储为数组。对此还没有真正考虑过。但完全有道理。