基于其他列在大型数据框中创建列

2024-03-29 06:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,里面有6万多家公司的名字。我把数据框简化了。你知道吗

print dm


      COMPANY  ID  CUSIP
    0      AB   0     33
    1      CD   0     33
    2      LM   0     33
    3      NT   1     34
    4      ET   1     34
    5      RY   1     35
    6      EU   3     36
    7      EY   3     37

我想基于ID和CUSIP的值创建一个新列

   COMPANY  ID  CUSIP    NEW ID
0      AB   0     33         1
1      CD   0     33         1 
2      LM   0     33         1
3      NT   1     34         2
4      ET   1     34         2 
5      RY   1     35         3
6      EU   3     36         4
7      EY   3     37         5

如您所见,对于ID的每个值,如果CUSIP的值不同,则新ID的值是前一个值加1。另外,对于CUSIP的每次更改,ID的值是前一个值加一。你知道吗

我的问题是我想知道一个基于最近用pandas解释的条件创建新列的代码。有什么想法吗?你知道吗


Tags: 数据idabcd公司名字companyet
1条回答
网友
1楼 · 发布于 2024-03-29 06:37:04

使用factorize

In [30]: pd.factorize(df.CUSIP)
Out[30]: (array([0, 0, 0, 1, 1, 2, 3, 4]), array([33, 34, 35, 36, 37]))

In [31]: values, labels = pd.factorize(df.CUSIP)

In [32]: df['NEW_ID'] = values

In [33]: df
Out[33]: 
  COMPANY  ID  CUSIP  NEW_ID
0      AB   0     33       0
1      CD   0     33       0
2      LM   0     33       0
3      NT   1     34       1
4      ET   1     34       1
5      RY   1     35       2
6      EU   3     36       3
7      EY   3     37       4

[8 rows x 4 columns]

将1添加到值以获得所需的输出,但基于0的索引更具python特性。你知道吗

相关问题 更多 >