Skip to main content
 首页 » 编程设计

python之是否可以在一条指令中更改所有行值

2025年05月04日21kenshinobiy

我有一个 Pandas 数据框:

df = pd.read_csv("PastHires.csv")  

我有一个包含 Y/N 值的“已雇用”列。我想让它们为 1 或 0 来绘制它们。 是否有可能实现这样的目标?

df['Hired'] = 1 if df['Hired'] is 'Y' else 0 

此刻它把 0 放到所有行 :(

编辑: 根据 0x2bad answer 修复:

dist = df[['Previous employers','Hired']][4:10] 
dist['Hired'] = 1 if dist['Hired'] == 'Y' else 0 

但抛出“系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”

请您参考如下方法:

使用numpy.where :

df['Hired'] = pd.np.where(df.Hired == 'Y', 1, 0) 

或pandas.Series.map :

df['Hired'] = df.Hired.map({'Y': 1, 'N', 0}) 

效率较低,但可以处理两种以上的情况。

请注意,这些比在 1000 多行上应用要快。