当我尝试将astype(float)
方法应用于pandas中的分组数据框时,出现以下错误。
ValueError: could not convert string to float:
你知道为什么我不能通过astype
方法将字符串转换为浮点数的原因是什么?以及如何解决这个问题?
下面是我得到的代码错误和示例数据。
def group(self,agg_method):
df=self.df
grouped=df.groupby(['Tilt [deg]', 'Azimuth [deg]'],as_index=False)
groupdf=grouped.agg(agg_method)
print(groupdf['Azimuth [deg]'][0],len(groupdf['Azimuth [deg]'][0]))
groupdf['Azimuth [deg]']=groupdf['Azimuth [deg]'].astype(float) <- I get error here
示例数据
Tilt [deg] Azimuth [deg] Glass SHGC Area of Multiplied Openings [m2] \
0 90.0 124.48 0.57 1450.24
1 90.0 207.3 0.57 115.66
2 90.0 207.47 0.57 115.62
3 90.0 208.25 0.57 23.18
4 90.0 208.26 0.57 113.12
5 90.0 214.48 0.57 451.94
6 90.0 218.57 0.57 230.08
7 90.0 304.46 0.57 72.66
8 90.0 304.48 0.57 1827.53
9 90.0 34.48 0.57 917.29
答案 0 :(得分:2)
我认为您需要to_numeric
参数errors='coerce'
才能将非数字转换为NaN
s:
groupdf['Azimuth [deg]']= pd.to_numeric(groupdf['Azimuth [deg]'], errors='coerce')
如果需要删除所有不可解析的列且数据中没有NaN
个值,请使用boolean indexing
并按notnull
过滤:
groupdf = groupdf[pd.to_numeric(groupdf['Azimuth [deg]'], errors='coerce').notnull()]
在最新版本的pandas中,0.21.0
可以使用Series.notna
:
groupdf = groupdf[pd.to_numeric(groupdf['Azimuth [deg]'], errors='coerce').notna()]