Liz*_*iza 5 python dataframe pandas
我有一个 df ,其中有两列uid和p,我想向现有 df 添加一个新列,或者使用附加列创建一个全新的 df ,该附加列的值基于列“uid”和索引列表的值X:
x = [2, 9, 12]
x 包含我应该生成新 id 的索引,新 id 是以前的 id 的增量。因此,将有两种情况,每当遇到列表 x 中的索引时,都会生成新的 id,每当uid列中的 id 发生更改时,都会再次生成新的 id,如下所示:
uid expected_newid p
0 1 1 10
1 1 1 23
2 1 2 20 #new id generated at index 2
3 1 2 40
4 2 3 21 #newid generated as "uid" changes
5 2 3 89
6 2 3 45
7 3 4 50
8 3 4 32
9 3 5 76 #new id generated at index 9
10 3 5 71
11 3 5 90
12 3 6 56 #new id generated at index 12
13 3 6 87
Run Code Online (Sandbox Code Playgroud)
如果有任何不清楚的地方,请告诉我。
我可以使用以下代码管理案例,每当uid发生更改时生成新的 id
df['newid'] = (df.uid.diff() != 0).cumsum()
Run Code Online (Sandbox Code Playgroud)
但它还应该在列表 x 中提到的索引处生成 newid,如“expected_newid”列中所示
IIUC,您可以简单地扩展当前使用的条件以包括索引使用“或”的可能性x(此处写为|):
In [12]: df["newid"] = ((df.uid.diff() != 0) | (df.index.isin(x))).cumsum()
In [13]: df
Out[13]:
uid expected_newid p newid
0 1 1 10 1
1 1 1 23 1
2 1 2 20 2
3 1 2 40 2
4 2 3 21 3
5 2 3 89 3
6 2 3 45 3
7 3 4 50 4
8 3 4 32 4
9 3 5 76 5
10 3 5 71 5
11 3 5 90 5
12 3 6 56 6
13 3 6 87 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3769 次 |
| 最近记录: |