gpt4 book ai didi

python - 如何在 Pandas 数据框中运行循环来附加列?

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:55 25 4
gpt4 key购买 nike

我有一个数据框,如下所示:

    MID        POSITION
1 22596394 R8

2 22596394 R8

3 22596394 R8

4 22591549 R6

5 22591549 R6

6 22591549 R6

现在我有另一个数据帧,它将是运行一些代码后的输出,如下所示:

Position     Usage
R1 0
R2 0
R3 0
R4 0
R5 0
R6 1
R7 0
R8 1
L1 0
L2 0
L3 0
...
L8 0

我想按照以下逻辑填写“用途”栏:

无论 MID 发生变化,请记下相应的 POSITION 并填充输出数据帧中对应的用途行,例如:在上面的数据帧中,R8 和 R6 用途行应填充 1,其余位置列应填充 0。类似地,如果MID 对于同一位置(例如 R6)更改两次,例如 R6 用法行应填充 2,依此类推。最好的方法是什么?提前致谢!

最佳答案

我认为你需要nunique然后reindex :

print (df1.groupby('POSITION')['MID'].nunique())
POSITION
R6 1
R8 1
Name: MID, dtype: int64

print (df1.groupby('POSITION')['MID']
.nunique()
.reindex(df2.set_index('Position').index, fill_value=0)
.rename('Usage')
.reset_index())
Position Usage
0 R1 0
1 R2 0
2 R3 0
3 R4 0
4 R5 0
5 R6 1
6 R7 0
7 R8 1
8 L1 0
9 L2 0
10 L3 0

说明:

要获取每组唯一值的数量,需要 groupby按列 POSITION 然后聚合 nuniqueMID 列上。您将获得带有索引 R6R8 的新 Series。然后需要从 df2 和列 Position 添加另一个值。因此,如果值是唯一的,一种可能的解决方案是通过 set_index 从列 position 创建 index然后reindex df1indexdf2index 中的值。获取一些 NaN,将其替换为 0(参数 fill_value=0)。然后需要从索引创建新列 - 首先将 Series 名称重命名为 rename最后reset_index - 获得漂亮的DataFrame

关于python - 如何在 Pandas 数据框中运行循环来附加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40148742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com