我有一組包含日期的列(從Excel文件導入),我需要按如下方式處理它們:如何在不創建NaN的情況下處理數據框?
如果其中一列中的單元格爲空白,請將另一列設置爲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)其中一些列的值爲「看到註釋」,而不是日期或空白。 「看筆記」對於正確計算遺漏物品至關重要,它必須在那裏才能防止單元格被標記爲空,並將物品計數丟失(增加「空白單元格」數量)。實際的問題是,如果我在上面的.isnull代碼之前運行此代碼,evry空白變爲NaN或nan或NaT,然後沒有標誌爲空/丟失。
這是我用來修剪日期字符串的代碼,並將「看筆記」更改爲一個字符串...因爲否則它只是在輸出中空白。
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])
我想我的問題可能與列的dtype有關。當我運行打印(df.dtypes),每列顯示爲「對象」,除了一個我專門設置以此來詮釋:
df_combined['Num'] = df_combined['Num'].apply(lambda x: int(x) if x == x else "")
那麼,你要麼有日期,要麼你有一個列中的對象。你有沒有想過把「看筆記」翻譯成假日期,比如1970-01-01?因爲現在你嘗試混合字符串,日期和NaN。我寧願混合日期和NaN。因爲這就是熊貓所支持的。 – mkastner