我一直在这个问题上一段时间无济于事.这几乎是至少另外一个问题的重复,但我无法弄清楚如何从网上相关答案中找到我正在寻找的内容.
我有一个Pandas DataFrame(我们称之为df),它看起来像:
Name Value Value2
'A' '8.8.8.8' 'x'
'B' '6.6.6.6' 'y'
'A' '6.6.6.6' 'x'
'A' '8.8.8.8' 'x'
Run Code Online (Sandbox Code Playgroud)
Name索引在哪里?我想将其转换为如下所示:
Name Value Value2
'A' ['8.8.8.8', '6.6.6.6'] 'x'
'B' ['6.6.6.6'] 'y'
Run Code Online (Sandbox Code Playgroud)
因此,基本上,每个Value对应于相同索引的应该组合成一个列表(或一个集合或一个元组),并且该列表被Value用作相应索引的列表.并且,如图所示,Value2在索引相同的行之间是相同的,所以它应该在最后保持相同.
我所做的(成功)是弄清楚如何将Value列中的每个元素放入一个列表中:
df['Value'] = pd.Series([[val] for val in df['Value']])
Run Code Online (Sandbox Code Playgroud)
在我在本文开头链接的问题中,将列与重复索引组合在一起的推荐方法提供了一种解决方案df.groupby(df.index).sum().我知道除了df.index作为一个参数之外我还需要一些东西,groupby因为Value专栏被视为特殊的,我不知道该代替什么,sum()因为那不是我正在寻找的东西.
希望很清楚我在寻找什么,请告诉我是否有任何我可以详细说明的内容.我也尝试过简单地循环遍历DataFrame,找到具有相同索引的行,将其组合Values到一个列表中并相应地进行更新df.在尝试让这个方法工作了一点之后,我想我会寻找更多的Pandas式的处理这个问题的方法.
编辑:作为德尔曼答案的后续,该解决方案有点奏效.在Values似乎正确地连接成一个列表.我意识到的一件事是unique函数返回a Series,而不是a DataFrame.另外,我在实际设置的不仅仅是更多的列Name,Value和 …
我有一个像下面这样的熊猫数据框.
UsrId JobNos
1 4
1 56
2 23
2 55
2 41
2 5
3 78
1 25
3 1
Run Code Online (Sandbox Code Playgroud)
我根据UsrId对数据框进行分组.分组数据框在概念上如下所示.
UsrId JobNos
1 [4,56,25]
2 [23,55,41,5]
3 [78,1]
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找一个内置API,它将为UsrId提供最大的工作量.对于上面的示例,UsrId-2具有最大计数.
更新: 我希望"n"UserIds具有最大作业数,而不是具有最大作业数的UsrID.对于上面的例子,如果n = 2,则输出为[2,1].可以这样做吗?