我有一个熊猫数据框:

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


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

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


目前将0放入所有行:(

编辑:
根据0x2bad答案固定:

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多行中,这些速度比apply快。

关于python - 是否可以在一条指令中更改所有行值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56201228/

10-12 18:09