我是python的新手,正在与pandas一起练习。在我的数据框中,有一列称为NET_REVENUE,其类型为字符串。我正在尝试将其转换为float以便进一步分析。
但是,当我运行以下代码时,它会提供反馈,我不太了解。 我确信原始列中没有缺失的值。显然,有些已成功转换为float。但是4732中的2918不是。
有人可以帮忙吗?
sep_IM_2019['NET_REVENUE_numeric'] = pd.to_numeric(sep_IM_2019['NET_REVENUE'], errors='coerce')
/Users/Leo/opt/miniconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning:试图在一个副本上设置一个值 从DataFrame切片。尝试使用.loc [row_indexer,col_indexer] = 值
请参阅文档中的警告: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy “”“启动IPython内核的入口点。
sep_IM_2019.NET_REVENUE_numeric.isnull().sum()
#2918
sep_IM_2019.NET_REVENUE_numeric
8 NaN
46 NaN
56 NaN
62 NaN
71 NaN
..
76472 NaN
76476 NaN
76503 NaN
76505 NaN
76510 NaN
Name: NET_REVENUE_numeric, Length: 4732, dtype: float64
答案 0 :(得分:0)
此答案可能有助于您理解警告-https://stackoverflow.com/a/20627316/8231447
关于转换为浮点数-我不确定您是要运行to_numeric还是要在系列中调用.astype(float)
sep_IM_2019["NET_REVENUE_numeric"] = ]sep_IM_2019['NET_REVENUE'].astype(float).
希望这会有所帮助!
答案 1 :(得分:0)
您使用了errors='coerce'
,因此当它无法转换为浮点数时,它会为您提供NaN而不是引发错误。
尝试在不使用该参数的情况下运行to_numeric
来确切地找出问题所在。您的某些字符串很可能无法转换。仔细看看它们:
sep_IM_2019.loc[8,'NET_REVENUE']
如果我相信您的清单,应该是第一个有此问题的字符串。