python - python:将带有逗号和 $ 的数据框列转换为浮点数
问题描述
我正在尝试将数据框中的一列价格转换为浮点数,然后计算前 5 行的平均值。首先我以这种方式成功地做到了:
import pandas as pd
import numpy as np
paris_listing = pd.read_csv("C:../.../.../paris_airbnb.csv")
stripped_commas = paris_listing["price"].str.replace(",", "")
stripped_dollars = stripped_commas.str.replace("$", "")
paris_listing["price"] = stripped_dollars.astype("float")
mean_price = paris_listing.iloc[0:5]["price"].mean()
print (mean_price)
但我试图制作一个函数并将其应用到数据框上,但它没有用
def conversion_price(price_conv):
price_conv = price_conv.str.replace(",", "")
price_conv = price_conv.str.replace("$", "")
price_conv = price_conv.astype("float")
price_mean = price_conv.iloc[0:5].mean()
paris_listing["converted_price"] = paris_listing["price"].apply(conversion_price)
解决方案
您的问题有点令人困惑,您是否希望所有行都具有前 5 个价格的平均值或后 5 个价格的平均值?无论如何,这是计算接下来 5 个价格的平均值的代码。get_mean 函数将返回均值(present_index 到 present_index+5)。
def get_mean(row):
index = df[df == row].dropna().index
if index+4 in df.index:
index_list = range(index,index+5)
price_mean = np.mean([df.loc[index,'price'] for index in index_list])
return price_mean
return np.NaN
paris_listing['price'] = paris_listing['price'].str.replace(r'[$\,]','').astype('float')
paris_listing["converted_price"] = paris_listing.apply(get_mean,axis = 1)
以下语句可用于仅查找前 5 行的平均值
mean = df.price[0:5].mean()
推荐阅读
- c# - 我试图让标签中没有按钮叮当声,它的工作只有 2 次点击
- css - CSS 网格单元格最大宽度
- javascript - 如何遍历 JS 中的嵌套对象
- ios - SwiftUI 中用于通用链接的编程导航
- android - 在 Android 10 上使用 RNFetchBlob 的下载管理器 React Native 下载文件
- c# - 如何在 xamarin 中获得专注的 VisualElement?
- c++ - C/C++:通过将参数复制到局部变量来模拟限制关键字
- python - 访问类的“自我”属性的正确方法
- android - 如何在 Flutter 中创建一个占据 Android 手机一半屏幕的应用程序?
- r - 安装包 webr 失败