我有一个Pandas Dataframe,不同的列有不同的dtypes.例如. df.dtypes返回以下内容.
Date datetime64[ns]
FundID int64
FundName object
CumPos int64
MTMPrice float64
PricingMechanism object
各种奶酪列都缺少价值.使用NaN值对其执行组操作会导致问题.用.fillna()方法摆脱它们是显而易见的选择.问题是字符串的明显clouse是.fillna(“”),而.fillna(0)是整数和浮点数的正确选择.在DataFrame上使用任一方法都会引发异常.任何优雅的解决方案,除了单独做它们(有大约30列)?我有很多代码,具体取决于DataFrame,并且不希望重新键入列,因为它可能会破坏其他逻辑.
可以做:
df.FundID.fillna(0)
df.FundName.fillna("")
etc
解决方法:
您可以遍历它们并使用if语句!
for col in df:
#get dtype for column
dt = df[col].dtype
#check if it is a number
if dt == int or dt == float:
df[col].fillna(0)
else:
df[col].fillna("")
当您遍历pandas DataFrame时,您将获得每个列的名称,因此要访问这些列,请使用df [col].这样你就不需要手动完成了,脚本可以遍历每一列并检查它的dtype!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。