python - 创建列以跟踪另一列中的缺失值

标签 python pandas dataframe missing-data

我正在添加一个模拟数据框来举例说明我的问题。

我有一个大型数据框,其中某些列缺少值。 我想创建一些额外的 bool 列,其中 1 对应于行中的非缺失值,0 对应于缺失值。

names = ['Banana, Andrew Something (Maria Banana)', np.nan, 'Willis, Mr. Bruce (Demi Moore)', 'Crews, Master Terry', np.nan]

room = [100, 330, 212, 111, 222]

hotel_loon = {'Name' : pd.Series(names), 'Room' : pd.Series(room)}

hotel_loon_df = pd.DataFrame(hotel_loon)

在我在 stack overflow 上发现的另一个问题中他们非常彻底且清楚地了解如何继续跟踪所有具有缺失值的列,但不跟踪特定的列。 我尝试了该代码的一些变体(即使用 where ),但我没有成功创建我想要的代码,如下所示:

                                       Name Room Name_present Room_present
0   Banana, Andrew Something (Maria Banana) 100             1            1 
1                                      NaN  330             0            1
2          Willis, Mr. Bruce (Demi Moore)   212             1            1
3                    Crews, Master Terry    111             1            1
4                                    NaN    222             0            1

感谢您的宝贵时间,我相信最终这会是微不足道的,但由于某种原因我陷入了困境。

最佳答案

要节省一些输入,请使用 DataFrame.notnull,添加一些后缀,然后将结果连接回来。

pd.concat([df, df.notnull().astype(int).add_suffix('_present')], axis=1)

                                      Name  Room  Name_present  Room_present
0  Banana, Andrew Something (Maria Banana)   100             1             1
1                                      NaN   330             0             1
2           Willis, Mr. Bruce (Demi Moore)   212             1             1
3                      Crews, Master Terry   111             1             1
4                                      NaN   222             0             1

关于python - 创建列以跟踪另一列中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59847579/

相关文章:

python - Python 中的模糊查找

python - 当值是另一个字典时从字典获取键

python - 将多个 CSV 文件导入 pandas 并连接到一个 DataFrame

python - 将 python 数据框中的特定列转储为行

python - GPU 仅被使用 1-5% Tensorflow-gpu 和 Keras

python - 当Microsoft Edge进行操作时,如何使用python从PDF渲染图像?

python - 统计列中连续True的个数,False时重新开始

python - Pandas 数据透视表没有分组

python - Pandas 根据需要匹配的其他列的值创建新的列 ID

将长数据 reshape 为多个宽列