我有一个csv文件,它有一个列"graduated“,它要么显示毕业日期,要么显示0(如果还没有毕业)。
df.dtypes返回'object‘对于此列,我希望将所有日期转换为'1’(表示该列中的人已毕业)。我该怎么做呢?
发布于 2021-06-15 11:46:02
您可以检查df.graduated是否不等于'0'。要保留nan,请仅为notnull格式的行编制索引
notnull = df.graduated.notnull()
df.loc[notnull, 'graduated'] = df.loc[notnull, 'graduated'].ne('0').astype(int)玩具示例:
df = pd.DataFrame({'graduated': ['2020-12-30', '0', '2021-05-30', np.nan]})
# graduated
# 0 2020-12-30
# 1 0
# 2 2021-05-30
# 3 NaNnotnull = df.graduated.notnull()
df.loc[notnull, 'graduated'] = df.loc[notnull, 'graduated'].ne('0').astype(int)
# graduated
# 0 1
# 1 0
# 2 1
# 3 NaN发布于 2021-06-15 12:10:36
使用pandas.to_datetime转换日期并转换为布尔系列。然后,将其强制转换为int以获得所需的结果。
pd.to_datetime(df.graduated, errors='coerce').notnull().astype(int)https://stackoverflow.com/questions/67979616
复制相似问题