为了账号安全,请及时绑定邮箱和手机立即绑定

将 np.nan 转换成 pd.NA

将 np.nan 转换成 pd.NA

回首忆惘然 2023-01-04 10:07:31
鉴于包含,我如何转换np.nan为新格式?pd.NApd.DataFramefloatimport numpy as npimport pandas as pddf = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])df.iloc[0, 1] = 1.5df.iloc[3, 0] = 4.7df = df.convert_dtypes()type(df.iloc[0, 0])  # numpy.float64 - I'am expecting pd.NA使用包含pd.convert_dtypes()时似乎不起作用。但是,当包含.dffloatdfint
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

fillna 对你有用吗?


import numpy as np

import pandas as pd


df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])

df.iloc[0, 1] = 1.5

df.iloc[3, 0] = 4.7


df = df.fillna(pd.NA)

去向


      A     B

0  <NA>   1.5

1  <NA>  <NA>

2  <NA>  <NA>

3   4.7  <NA>

看类型


type(df.iloc[0, 0]) 

出去:


pandas._libs.missing.NAType


查看完整回答
反对 回复 2023-01-04
?
慕斯709654

TA贡献1840条经验 获得超5个赞

从 v1.2 开始,这现在默认使用浮点数,如果你想要整数使用convert_floating=False参数。


import numpy as np

import pandas as pd


df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])

df.iloc[0, 1] = 1.5

df.iloc[3, 0] = 4.7


df = df.convert_dtypes()

df.info()

输出


<class 'pandas.core.frame.DataFrame'>

Int64Index: 4 entries, 0 to 3

Data columns (total 2 columns):

 #   Column  Non-Null Count  Dtype  

---  ------  --------------  -----  

 0   A       1 non-null      Float64

 1   B       1 non-null      Float64

dtypes: Float64(2)

memory usage: 104.0 bytes


使用整数


import numpy as np

import pandas as pd


df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])

df.iloc[0, 1] = 1

df.iloc[3, 0] = 4


df = df.convert_dtypes(convert_floating=False)

df.info()

输出


<class 'pandas.core.frame.DataFrame'>

Int64Index: 4 entries, 0 to 3

Data columns (total 2 columns):

 #   Column  Non-Null Count  Dtype

---  ------  --------------  -----

 0   A       1 non-null      Int64

 1   B       1 non-null      Int64

dtypes: Int64(2)

memory usage: 104.0 bytes


查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信