如何在Python中基于行值创建新列(Pandas数据处理场景)
解决方案
首先修正原始数据集的合法构造代码(原直接赋值元组会触发Pandas报错,需改用列表):
import pandas as pd df = pd.DataFrame() df["collection_amount"] = [100, 200, 300] df["25%_coll"] = [1, 0, 1] df["75%_coll"] = [0, 1, 1] df["month"] = [4, 5, 6]
根据规则,当25%_coll列值为1时,基于month列创建新列,以下是两种实用实现方式:
方法1:用numpy.where快速映射
import numpy as np # 新列命名为25%_coll_month,符合条件时取month值,否则设为NaN df["25%_coll_month"] = np.where(df["25%_coll"] == 1, df["month"], np.nan)
方法2:布尔索引赋值(更直观)
# 先初始化新列为NaN df["25%_coll_month"] = np.nan # 筛选出25%_coll=1的行,将对应month值赋值给新列 df.loc[df["25%_coll"] == 1, "25%_coll_month"] = df["month"]
执行后得到的结果数据集:
| collection_amount | 25%_coll | 75%_coll | month | 25%_coll_month |
|---|---|---|---|---|
| 100 | 1 | 0 | 4 | 4.0 |
| 200 | 0 | 1 | 5 | NaN |
| 300 | 1 | 1 | 6 | 6.0 |
若需要自定义默认值(比如字符串"无"、数字0),只需将代码中的np.nan替换为对应值即可。
内容的提问来源于stack exchange,提问作者Gopi S
相关产品推荐
相关产品推荐

