2 回答

TA貢獻1816條經驗 獲得超6個贊
您可以通過正則表達式和對兩列執行此操作df.replace:
df.astype(str).replace({'(?i)True|TBC': True, '(?i)False|nan': False}, regex=True)
Col1 Col2
0 True True
1 True True
2 False False
3 False False
4 False True
5 True True
該模式不區分大小寫。

TA貢獻1806條經驗 獲得超8個贊
對我來說,這非常有效。由于您沒有給出確切的 csv 格式,我假設它會是這樣的:
Date;Checked;Verified
2018-05-23;FALSE;TRUE
2018-05-24;TRUE;TBC
2018-05-26;FALSE;TBC
2018-05-31;nan;nan
2019-12-01;TRUE;TRUE
2019-12-05;TRUE;TBC
2019-12-15;TRUE;FALSE
2019-12-23;FALSE;nan
然后我像你一樣調用了代碼:
df=pd.read_csv(path, sep=';', engine='python')
df=df.apply(lambda x: x.astype(str).str.lower())
df['Checked'] = np.where(df['Checked'].eq('true'), True, False)
df['Verified'] = np.where(df['Verified'].eq('true') | df['Verified'].eq('tbc'), True, False)
生成的數據框如下所示:
Date Checked Verified
0 2018-05-23 False True
1 2018-05-24 True True
2 2018-05-26 False True
3 2018-05-31 False False
4 2019-12-01 True True
5 2019-12-05 True True
6 2019-12-15 True False
7 2019-12-23 False False
您使用哪個 python 和 pandas 版本?我用 Python 3.6.1 和 Pandas 1.04 測試了這個
添加回答
舉報