Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用不应求和的文本项创建groupby_Python_Pandas_Group By - Fatal编程技术网

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的所有值并将其存储为数组。

对此还没有真正考虑过。但完全有道理。