【发布时间】:2019-07-18 15:07:51
【问题描述】:
我正在尝试从 pandas df 的两列中删除百分号和字母。我通过将百分比(它是一个浮点数)转换为一个字符串并使用带有 isdigit() 方法的列表推导来创建一个其中只有数字的字符串来做到这一点。然后我尝试将该字符串转换回 int 或 float,但都失败了,因为 ValueErrors 说转换无法发生。
我已经尝试过使用 astype() 方法、一个 lambda 表达式,并通过 pandas apply() 方法应用标准的 python float() 和 int() 方法。它们都带有相同的 ValueError。
这是我的代码:
def process_weather_vals(self):
self.weatherdf['New York, NY Humidity'] = self.weatherdf['New York, NY Humidity'].astype(str)
self.weatherdf['New York, NY Temp'] = self.weatherdf['New York, NY Temp'].astype(str)
self.weatherdf['New York, NY Humidity'] = self.weatherdf['New York, NY Humidity'].map(lambda x: ''.join([i for i in x if i.isdigit()]))
self.weatherdf['New York, NY Temp'] = self.weatherdf['New York, NY Temp'].map(lambda x: ''.join([i for i in x if i.isdigit()]))
self.weatherdf['New York, NY Humidity'] = self.weatherdf['New York, NY Humidity'].apply(lambda x: float(x))
self.weatherdf['New York, NY Temp'] = self.weatherdf['New York, NY Temp'].apply(lambda x: float(x))
【问题讨论】:
-
添加示例数据框
-
显示您的数据会很有帮助。百分号不是数字。