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

在熊猫中分配组的第一行

夏弘文
2023-03-14

我想分配一个组的第一行。

输入:

df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B'],
                   'col2': [1, 1, 2, 3],
                   'col3': ['value1', 'value2', 'value3', 'value4']})                   

我尝试了:

df.groupby(['col1', 'col2']).first()

但是我只得到第一排。

我想要这样的输出:

col1 col2 col3    first_row
A    1    value1  True
A    1    value2  False
B    2    value3  True
B    3    Value4  True

共有2个答案

富钧
2023-03-14

没有分组的替代方案:

df['first_row'] = df.col1.shift().ne(df.col1) | df.col2.shift().ne(df.col2) 

结果:

  col1  col2    col3  first_row
0    A     1  value1       True
1    A     1  value2      False
2    B     2  value3       True
3    B     3  value4       True
柯天宇
2023-03-14

使用groupby.cumcounteq。如果累积计数等于0,则它是第一行:

df['first_row'] = df.groupby(['col1', 'col2']).cumcount().eq(0)

[出去]

  col1  col2    col3  first_row
0    A     1  value1       True
1    A     1  value2      False
2    B     2  value3       True
3    B     3  value4       True
 类似资料:
  • 问题内容: 我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地在每列中绘制一行。我要做的是根据我进行的分类为每行手动分配颜色。 以下作品: 但是,当我的索引是整数时,它将不再起作用并抛出为KeyError: 我的理解是,当使用整数索引时,它必须以某种方式从0开始。这是我的猜测,因为以下内容同样适用: 我的问题是: 这是怎么回事 假设我有一个不是从0开始或不是由连续数字组成的整数索引,那么我如

  • 我正在使用此数据框: 我想通过名称和水果将其聚合,得到每个名称的水果总数。 我试着按名字和水果分组,但如何得到水果的总数呢。

  • 我有一个数据框,上面写着有一列 <代码> 我想对这些年龄段进行分组,并创建一个类似这样的新专栏 如何使用Pandas库实现这一点。 我试过这样做 但这样做我得到了这个警告 /Users/Anand/miniconda3/envs/learn/lib/python3.7/site packages/ipykernel_launcher.py:3:SettingWithCopyWarning:试图在数

  • 问题内容: 如问题所述,我有一个很大的数据框,但看起来像: 我试图摆脱文本数据,并将其替换为预定义的数值等效项。例如,在这种情况下,我想分别用或替换的或值。有没有一种方法无需我手动输入和更改值? 问题答案: / 上面的一个有趣的通用版本: 一切都不是。

  • 问题内容: 有没有办法在熊猫中舍入单个列而不影响数据框的其余部分? df.value1.apply(np.round)给出 使数据看起来像这样的正确方法是什么: 问题答案: 你很亲密 您将此回合应用于给出的一系列值。因此,返回类型为Series。您需要将该系列分配回该数据框(或具有相同索引的另一个数据框)。 同样,有一种方法基本上是的简写。

  • 问题内容: 我曾经在之后进行并行化,例如: 但是,有没有人想出如何并行化返回DataFrame的函数?如预期,此代码对于失败。 问题答案: 尽管确实应该将其内置到熊猫中,但这似乎可行