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

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

我有一个大的数据框,其中某些列缺少值。
我想创建一些额外的布尔列,其中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

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

参考方案

您可以将.isnull()用于您的案例,并将类型从bool更改为int

hotel_loon_df['Name_present'] = (~hotel_loon_df['Name'].isnull()).astype(int)
hotel_loon_df['Room_present'] = (~hotel_loon_df['Room'].isnull()).astype(int)

Out[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

~表示相反的意思,或者不是。

pandas DataFrame:根据另一列中的布尔值计算总和 - python

我对Python相当陌生,我尝试在pandas中模拟以下逻辑我目前正在循环抛出行,并希望对前几行的AMOUNT列中的值求和,但只求和最后一次看到的“ TRUE”值。实际数据似乎效率低下(我的数据框大约有500万行)?想知道用Python处理这种逻辑的有效方法是什么?逻辑:逻辑是,如果FLAG为TRUE,我想对前几行的AMOUNT列中的值求和,但只求和最后一次…

pandas.DataFrame.replace更改列的dtype - python

因此,我试图用np.nan替换数据框中的None值,并注意到在此过程中,即使数据框中的float列的数据类型不包含任何丢失的数据,它们也都更改为object。举个例子:import pandas as pd import numpy as np data = pd.DataFrame({'A':np.nan,'B':1…

Pandas Dataframe:在越来越多的列上循环并计算均值和标准差 - python

基本上,我有一个包含20个属性和一个值的表。我想找到std = 0-(即粒度级别完美允许1:1)所需的最少数量的属性。我想建立一个循环如果使用列名进行硬编码,则看起来像这样:for iter in range(1,21): dfcalc = df.groupby("LINE_NUM")["RATIO"].agg([np…

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

如何从'pandas.core.frame.DataFrame'中消除第一列 - python

我有以以下格式输出的代码。我应该如何删除第一列并可以将第二行的元素存储在列表中?输出类型为'pandas.core.frame.DataFrame'格式 speed lat lng 1 19.130506 12.616756 7.460664 2 63.595894 52.616838 7.460691 3 40.740044 72.616913 7.460…