如何处理数据帧而不到处创建NaN?

2024-04-26 12:01:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组包含日期的列(从Excel文件导入),我需要按如下方式处理它们:

如果其中一列中的单元格为空,请将另一列设置为1,否则该列为0。这使我能够对所有的1求和,并显示那些项目丢失了。你知道吗

我现在就是这样做的:

df_combined['CDR_Form_notfound'] = np.where(df_combined['CDR-Form'].mask(df_combined['CDR-Form'].str.len()==0).isnull(),1,0)

我遇到的一个问题是,我必须设置这些列的格式,以便A)将日期修剪为仅显示日/月/年,B)其中一些列的值为“see notes”,而不是日期或空白。“see notes”对于正确说明丢失的项目是必不可少的,它必须在那里,以防止单元格标记为空,项目计数为丢失(添加到“空白单元格”计数)。实际的问题是,如果我在上面的.isnull代码之前运行此代码,evry blank将变为NaN、NaN或NaT,然后NOTHING将标记为null/缺失。你知道吗

这是我用来修剪日期字符串并将“see notes”更改为字符串的代码…因为否则它只会在输出中变成空白。你知道吗

for c in df_combined[dateColumns]:
        df_combined[c] = df_combined[c].astype(str) # uncomment this if columns change from dtype=str 
        df_combined[c] = np.where(df_combined[c].str.contains("20"), df_combined[c].str[:10], df_combined[c])
        df_combined[c] = np.where(df_combined[c].str.contains("see notes"), df_combined[c].str, df_combined[c])

我想我的问题可能与列的数据类型有关。当我运行print时(df.d类型),每个列都显示为“object”,除了我使用以下命令专门设置为int的列:

df_combined['Num'] = df_combined['Num'].apply(lambda x: int(x) if x == x else "")

Tags: 项目代码标记formdfnpwhere空白
1条回答
网友
1楼 · 发布于 2024-04-26 12:01:57

你在数南吗? 如果是,您可以:

len(df.loc[:, df.isnull().any()])

我看到您提到“blank”是因为它是从excel提交的,所以您可以在运行上面的命令之前使用以下命令将这些空格转换为nan:

df['CDR-Form'].replace('', np.NaN,inplace=True)

相关问题 更多 >