首页 > 解决方案 > 根据条件为列名添加后缀

问题描述

我想将前缀“_nan”添加到全是 nan 的列中。我有以下代码可以打印我想要的内容,但不会重新分配实际数据框中的列,我不知道为什么。有谁知道为什么会这样?提前致谢

df = pd.DataFrame({ 'a':[1, 0, 0, 0],
                    'b':[np.nan, np.nan, np.nan, np.nan],
                    'c':[np.nan, np.nan, np.nan, np.nan]})
a = df.loc[:,df.isna().all()].columns

df[[*a]] = df[[*a]].add_suffix('_nan')

标签: pythonpandasrename

解决方案


您可以使用列表理解:

df.columns = [x + '_nan' if df[x].isna().all() else x for x in df.columns]

输出:

    a   b_nan   c_nan
0   1     NaN     NaN
1   0     NaN     NaN
2   0     NaN     NaN
3   0     NaN     NaN

推荐阅读