Python 查找某些列全部为NaN的数据帧条目

Python 查找某些列全部为NaN的数据帧条目,python,pandas,numpy,Python,Pandas,Numpy,我正在构建一个包含日常信息的数据框架。我想对机器学习算法的日期进行一次热编码,但是我不确定如何找到每天包含NaN的entires,并将所有条目的日期设置为True。最后,将所有剩余的NaN值设置为False print("Starting to process files...") #Init dataframe df= pd.DataFrame(columns=["start", "close", "state", "monday", "tuesday", "wednesday", "thur

我正在构建一个包含日常信息的数据框架。我想对机器学习算法的日期进行一次热编码,但是我不确定如何找到每天包含NaN的entires,并将所有条目的日期设置为True。最后,将所有剩余的NaN值设置为False

print("Starting to process files...")
#Init dataframe
df= pd.DataFrame(columns=["start", "close", "state", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"])
#Define days
weekdays = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
#Then for each day of the week, creep through all the files and append entries to dataframe
for day in weekdays:
    files = getFilesFromDir("datastream/"+day+"/")
    print("Processing " + day)
    for file in files:
        print("Processing...")
        content = readCSV(file)
        df = transformData(df, content)
        print("File finished.")
        print(df.size)
        break
    #Done with this day, assign one-hot encoded value to its column and proceed to next day
    df[day] = True
当前解决方案的问题是,一旦完成星期二,所有星期一条目也将为星期二赋值为True,等等。这就是为什么我问如何在7天中的每一天只查找具有NaN的条目,以便我只能将这些条目设置为True。然后在最后将所有剩余的NaN设置为false


transformData()是一个很长的方法,但这是将条目写入数据框的地方,但在其中同时指定这些值并不太实际

从发布的代码中破译目标有点困难,但除非在加载文件时有很好的理由执行此过程,否则在加载文件后只需执行一次。从您的代码来看,动态处理似乎没有任何内存优势

这就是我以前在基于工作日的数据帧中对日期时间进行热编码的方法

df['weekday\u name']=df['my\u datetime\u column'].dt.strftime(“%A”)
df=pd.concat([df,pd.get_dummies(df['weekday_name']),axis=1)。drop(['weekday_name','index'],axis=1)

我有很多(很多!)数据行(每个文件大约18k行,每天大约20个文件),所以我不想在数据集中附加额外的字符串标签,然后转换为一种热编码(因此我没有发布数据帧片段,单凭片段很难理解它)Hi@peterxz,我通常在有1m+行的数据帧上执行此操作,因此360k行应该不会有问题。您可能不需要中间步骤即可执行此操作-
df=pd.concat([df,pd.get\u dummies(df.my\u datetime\u column.dt.strftime(“%A”)],axis=1),axis=1)
,额外的步骤更为清晰。在优化之前,试一试,看看它是否会倒塌:)