小编gri*_*ish的帖子

Pandas DataFrame - 将一列的值与相同的索引组合到列表中

我一直在这个问题上一段时间无济于事.这几乎是至少另外一个问题的重复,但我无法弄清楚如何从网上相关答案中找到我正在寻找的内容.

我有一个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和 …

python pandas

9
推荐指数
1
解决办法
7952
查看次数

标签 统计

pandas ×1

python ×1