我有一个场景,我试图按特定值过滤数据帧,并计算另一个标识符存在的次数。然后,我将其转换为字典并映射回数据帧。我遇到的问题是,生成的字典无法映射回数据帧,因为我正在向字典引入复杂性(额外的键?),我不知道如何避免它。
我想一个简单的问题是:“如何在我的CELL_ID列上使用value_counts”,通过另一个名为Grid_Type的列进行过滤,并将结果映射回每个CELL_ID的所有单元格?
到目前为止,我在做什么
这可以计算包含CELL_ID的单元格数,但不允许我按Grid_Type
df['CELL_ID'].value_counts()
z1 = z.to_dict()
df['CELL_CNT'] = df['CELL_ID'].map(z1)
这个简单示例的字典输出如下所示:
7015988: 1, 7122961: 1, 6976792: 1
我的代码不好
这是我迄今为止一直在研究的 - 我希望能够返回计数,并按Grid_Type过滤。例如,我希望能够计算我在每个CELL_ID中看到“Spot”的次数。
z = df[df.Grid_Type == 'Spot'].groupby('CELL_ID')['Grid_Type'].value_counts()
z1 = z.to_dict()
df['SPOT_CNT'] = df['CELL_ID'].map(z1)
似乎在我尝试过滤的示例中,字典返回了一个更复杂的结果,其中包括Grid_Type。问题是,我只想将计数映射到Cell_ID。
(7133691, 'Spot'): 3, (7133692, 'Spot'): 3, (7133693, 'Spot'): 2
示例数据
+---------+-----------+
| CELL_ID | Grid_Type |
+---------+-----------+
| 001 | Spot |
| 001 | Square |
| 001 | Spot |
| 001 | Square |
| 001 | Square |
| 002 | Spot |
| 002 | Square |
| 002 | Square |
| 003 | Square |
| 003 | Spot |
| 003 | Spot |
| 003 | Spot |
+---------+-----------+
预期结果
+---------+-----------+----------+
| CELL_ID | Grid_Type | SPOT_CNT |
+---------+-----------+----------+
| 001 | Spot | 2 |
| 001 | Square | 2 |
| 001 | Spot | 2 |
| 001 | Square | 2 |
| 001 | Square | 2 |
| 002 | Spot | 1 |
| 002 | Square | 1 |
| 002 | Square | 1 |
| 003 | Square | 3 |
| 003 | Spot | 3 |
| 003 | Spot | 3 |
| 003 | Spot | 3 |
+---------+-----------+----------+
感谢您提供的任何帮助/
长风秋雁
慕姐8265434
相关分类