Pandas - 我如何计算一个字段来计算 ID 字段中的值按顺序出现的出现次数

数据挖掘 Python 熊猫
2022-02-21 12:58:20

我知道如何在 Pandas 中读取数据框并进行基本操作,但是如何根据 ID 列填充订单列?例如,如果自行车出现两次,如下所示,我如何在第一次出现时使用 1 填充顺序列,然后在第二次出现时使用 2 填充顺序列,然后对汽车执行相同的操作。

    ID      Color       Order?????
    bike    red         1
    bike    black       2
    car     green       1
    car     orange      2
    car     blue        3
1个回答

欢迎来到数据科学!在这里,我创建了您的数据框并展示了一种创建所需列的方法。除了 pandas,我还使用 numpy:

import pandas as pd
import numpy as np

# Create df
ID = ['bike', 'bike', 'car', 'car', 'car']
Color = ['red', 'black', 'green', 'orange', 'blue']
df = pd.DataFrame(data={'ID': ID, 'Color': Color})

添加一个名为“Order”的新列,其计数基于每个组 - 这些是仅包含一个 ID 值的迷你数据帧。这利用groupby了 Pandas 数据框上的方法

df['Order'] = df.groupby('ID').transform(lambda x: 1 + np.arange(len(x)))

transform方法采用一个函数并将其应用于每个组。我使用匿名函数(只是一个没有名称的函数),也称为lambda 函数,使用关键字lambda

结果:

    Color    ID  Order
0     red  bike      1
1   black  bike      2
2   green   car      1
3  orange   car      2
4    blue   car      3

正如anymous.asker 所提到的,如果您发布创建数据框的代码,将来会有所帮助!