当前位置: 首页 > 知识库问答 >
问题:

熊猫中相同行的列表理解[重复]

左丘嘉木
2023-03-14

我想知道是否有一种简洁的方法可以在存在相同行的情况下“折叠”熊猫数据帧。例如:

df=

col_a  col_b
    a     1
    b     2
    b     3
    c     4
    d     5
    d     6
    d     7

我需要的是:

df_new = 

col_a     col_b
    a         1
    b    [2, 3]
    c         4
    d [5, 6, 7]

它肯定应该包括groupby

df_new = df.groupby('col_a').apply(....)

但如何有效地实现括号中的位,我感到困惑。

共有2个答案

孔嘉茂
2023-03-14
s = df.groupby('col_a')['col_b'].apply(list)
df['col_c'] = df['col_a'].map(s)

print(df)

col_a   col_b   col_c
0   a   1   [1]
1   b   2   [2, 3]
2   b   3   [2, 3]
3   c   4   [4]
4   d   5   [5, 6, 7]
5   d   6   [5, 6, 7]
6   d   7   [5, 6, 7]
吕和风
2023-03-14

您可以将列表应用到

df.groupby('col_a')['col_b'].apply(list)

col_a
a          [1]
b       [2, 3]
c          [4]
d    [5, 6, 7]
Name: col_b, dtype: object
 类似资料:
  • 我有一个数据框,如下所示 如何从它创建一个单独的x和y列?

  • 问题内容: 我在df中有几列相同的名称。需要重命名它们。无论如何,通常的重命名都会重命名,我可以将下面的blah重命名为blah1,blah4,blah5吗? 在[7]中: 问题答案: 我希望在Pandas中找到比通用Python解决方案更多的解决方案。如果Column的get_loc()函数找到带有“ True”值的重复项,则该掩码数组将返回掩码数组,“ True”值指向找到重复项的位置。然后,

  • 问题内容: 假设我有一个数据框如下 现在,我希望a和b列不同的行。所以预期的输出是 我怎样才能做到这一点? 问题答案: 我喜欢可读性,请使用: 输出:

  • 我已经看到了将一个列/系列分解成熊猫数据框架的多个列这一主题的一些变体,但是我一直在尝试做一些事情,但是现有的方法并没有真正成功。 给定如下数据帧: 我想将系列中的项目转换为列,以 值作为值,如下所示: 我觉得这应该是一个相对简单的问题,但我已经为此努力了几个小时,不断增加的复杂程度,但没有成功。

  • 在库中,很多时候都有一个更改对象的选项,例如使用以下语句... 我很好奇在传递与时返回什么以及如何处理对象。 当时,是否所有操作都在修改?当立即创建一个新对象,比如,然后返回?

  • 在下面的例子中,我有电影的数据: 我想将标题列值拆分为2个新列,即其中一个新列(“电影标题”)将采用=玩具故事作为行值,另一个新列(“年份”)将采用= 1995作为行值。 如何对整个数据帧执行此操作?