按ID分组检查DataFrame同组name是否一致并添加布尔列
解决方案
假设你的数据已加载到 pandas DataFrame 中,可通过以下步骤实现需求:
- 按
ID分组,检查每组内name列的唯一值数量是否为 1 - 使用
transform方法将分组结果映射回原 DataFrame 的每一行,生成新列names.equal
代码实现
import pandas as pd # 构造示例数据 data = { 'title.1': ['A', 'A', '', 'B', 'C', 'C', 'C', '', ''], 'title.2': ['A1', 'A1', 'B1', '', 'C1', 'C1', 'C1', 'D1', 'D1'], 'name': ['fruit', 'fruit', 'fruit', 'fruit, vegetable', 'vegetable, poultry, grain', 'vegetable, poultry', 'vegetable, poultry', 'poultry', 'vegetable'], 'ID': [1, 1, 2, 3, 4, 4, 4, 5, 5] } df = pd.DataFrame(data) # 新增 names.equal 列 df['names.equal'] = df.groupby('ID')['name'].transform(lambda x: x.nunique() == 1) print(df)
输出结果
| title.1 | title.2 | name | ID | names.equal |
|---|---|---|---|---|
| A | A1 | fruit | 1 | True |
| A | A1 | fruit | 1 | True |
| B1 | fruit | 2 | True | |
| B | fruit, vegetable | 3 | True | |
| C | C1 | vegetable, poultry, grain | 4 | False |
| C | C1 | vegetable, poultry | 4 | False |
| C | C1 | vegetable, poultry | 4 | False |
| D1 | poultry | 5 | False | |
| D1 | vegetable | 5 | False |
内容的提问来源于stack exchange,提问作者bvecc
相关产品推荐
相关产品推荐

