df['价格'] = df['相关信息'].apply(lambda x: re.findall(r'\d+\.\d+', x)[0] if re.findall(r'\d+\.\d+', x) else '')提取出价格,怎么把价格进行缺失值处理
时间: 2023-12-27 09:03:44 浏览: 17
您可以使用fillna()方法对价格列进行缺失值处理,如下所示:
```python
# 处理缺失值
df['价格'] = df['价格'].fillna(0.0)
```
其中,fillna()方法中的参数0.0表示缺失值被替换为0.0。
完整代码如下所示:
```python
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('豆瓣图书top250.xlsx')
# 提取价格
df['价格'] = df['相关信息'].apply(lambda x: re.findall(r'\d+\.\d+', x)[0] if re.findall(r'\d+\.\d+', x) else '')
# 处理缺失值
df['价格'] = df['价格'].fillna(0.0)
# 保存Excel文件
df.to_excel('豆瓣图书top250_处理后.xlsx', index=False)
```
希望能够帮助到您!
相关问题
r = requests.get('https://www.yelp.com/biz/social-brew-cafe-pyrmont') soup = BeautifulSoup(r.text, 'html.parser') regex = re.compile('.*comment.*') results = soup.find_all('p', {'class':regex}) reviews = [result.text for result in results] import numpy as np import pandas as pd df = pd.DataFrame(np.array(reviews), columns=['review']) df['review'].iloc[0] def sentiment_score(review): tokens = tokenizer.encode(review, return_tensors='pt') result = model(tokens) return int(torch.argmax(result.logits))+1 sentiment_score(df['review'].iloc[1]) df['sentiment'] = df['review'].apply(lambda x: sentiment_score(x[:512])) print(df) print(df['review'].iloc[3]) 解释
这段代码是爬取一个网页上的评论,并对评论进行情感分析。首先,使用requests库获取网页的内容。然后,使用BeautifulSoup库解析网页内容。接着,使用正则表达式找到所有包含评论的`<p>`标签。然后,将这些评论存储在一个DataFrame中,并取出第一个评论进行情感分析。情感分析的函数`sentiment_score`使用了一个预训练的模型,并将评论转换为tokens后输入模型,得到情感分析的结果。最后,将情感分析结果存储在DataFrame中,并打印出整个DataFrame和第四条评论。
import requestsfrom bs4 import BeautifulSoupimport pandas as pdurl = 'https://www.gk100.com/read_16892539.htm'header = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15"}r = requests.get(url, headers=header)r.encoding = r.apparent_encodingsoup = BeautifulSoup(r.text, features="lxml")w1 = soup.find_all("td")result = w1df = pd.DataFrame(result)df1 = df[2:]for index in df1: d1 = df1[df1.index%2==0] d2 = df1[df1.index%2!=0] d1 = d1.reset_index(drop=True) d2 = d2.reset_index(drop=True) df2 = pd.concat([d1,d2], axis=1)# 排序,按照第二列的元素进行降序排列df2 = df2.sort_values(by='人数/万', ascending=False)title = ['省份', '人数/万']df2.columns = titleprint(df2)将这个程序中人数/万的这列转化成数字
您可以使用pandas中的apply函数来将“人数/万”列转换为数字类型,例如:
```
df2['人数/万'] = df2['人数/万'].apply(lambda x: float(x.replace(',', '')))
```
这将使用lambda函数将每个值中的逗号删除并将其转换为浮点数类型。然后将修改后的结果存储回原始DataFrame中的“人数/万”列。