如何在熊猫中将 N/A (NaT) 转换为 0
Posted
技术标签:
【中文标题】如何在熊猫中将 N/A (NaT) 转换为 0【英文标题】:how to convert N/A's (NaT) to 0 in pandas 【发布时间】:2019-08-06 19:52:43 【问题描述】:我在我的 pandas 数据框中得到以下输出;似乎是因为我很少对某些记录使用null
值:
Cannot convert non-finite values (NA or inf) to integer
如何在 python/pandas 中编写处理程序或其他内容,将我很少使用的 N/A
记录值转换为 0 - 当它们出现时,我的脚本可以继续;大概是为了解决这个问题?
下面是我的代码;尝试使用 fillna()
- 此代码添加删除了数据帧输出中的“无法转换非有限值..”错误。
但是,对于那些很少记录的记录,它仍然在 pandas 数据框输出中显示 NaT
。
for row in excel_data.itertuples():
mrn = row.MRN
if mrn in ("", " ", "N/A", None) or math.isnan(mrn):
print(f"Invalid record: row")
excel_data = excel_data.drop(excel_data.index[row.Index])
excel_data = excel_data.fillna(0) # attempt
continue
else:
num_valid_records += 1
print(f"Processing #num_valid_records records")
return self.clean_data_frame(excel_data)
【问题讨论】:
寻找df.fillna(0)
?
你可以删除 NA 行,你可以用isnan()
找到它们并替换它们,你可以使用np.nan_to_num
,你可以......你明白了。你研究过这个吗?
@roganjosh 是的;我想找到它们并用 0 替换它们。
您可能想查看fillna()
,否则您可以创建一个可重现的示例。也来看看@this
【参考方案1】:
这里是一个使用fillna()
的例子:
df = pd.DataFrame([[1, 2, np.nan],
[5, np.nan, 7]],
columns=list('ABC'))
df
A B C
0 1 2.0 NaN
1 5 NaN 7.0
df.fillna(0)
A B C
0 1 2.0 0.0
1 5 0.0 7.0
【讨论】:
谢谢,看起来不错;但是我的记录在熊猫数据框中输出的是 NaT 而不是 NaN。 @No-Spex 两者都是一样的。如果有日期,NaN
是 NaT
好的.....我在我的代码中尝试了你的建议(上面,添加到 OP),它删除了 pandas '无法转换错误/输出'但是记录仍然在数据框中输出为 NaT .
如果您可以提供一个包含日期的示例数据框,我们可以使用它来运行您的代码并查看错误,这将更容易提供帮助。以上是关于如何在熊猫中将 N/A (NaT) 转换为 0的主要内容,如果未能解决你的问题,请参考以下文章