iba*_*ant 4 python dataframe pandas
我需要在pandas数据帧中只有1和0而不是True和False,只有以abc_开头的列.除了我的循环之外,还有更好的方法吗?
for col in df:
if col[:4] =='abc_':
df[col] = df[col].astype(int)
Run Code Online (Sandbox Code Playgroud)
选项1:转换所有 boolean(dtype == 'bool')列
df.loc[:, df.dtypes.eq('bool')] = df.loc[:, df.dtypes.eq('bool')].astype(np.int8)
Run Code Online (Sandbox Code Playgroud)
选项2:如果只abc_应转换以开头的那些布尔列:
col_mask = df.dtypes.eq('bool') & df.columns.str.contains('^abc_')
df.loc[:, col_mask] = df.loc[:, col_mask].astype(np.int8)
Run Code Online (Sandbox Code Playgroud)
选项3:仅按列名转换
df.loc[:, df.columns.str.match(r'^abc_.*$')] = \
df.filter(regex=r'^abc_').astype(np.int8)
Run Code Online (Sandbox Code Playgroud)
通过使用 str.contains
df.loc[:,df.columns.str.contains('abc_')]=df.loc[:,df.columns.str.contains('abc_')].astype(int)
Run Code Online (Sandbox Code Playgroud)
您可以使用filter和就地执行此操作update.
df.update(df.filter(regex='^abc_').astype(int))
Run Code Online (Sandbox Code Playgroud)