【发布时间】:2020-06-20 03:12:59
【问题描述】:
我是熊猫的新手。我经历了很多问题,但没有找到答案。
我有以下数据集。
Name || Price || Cuisine Category || City || Region || Cuisine Types || Rating Types || Rating
Pizza || 600 || Fast Food,Pizza || Ajmer || Ana Saga || Quick Bites || Good || 3.9
... ... ... ... ... ... ... ... ...
Chawla's || 300 || Beverages || Ajmer || Sagar Lake || Cafe || Average || 3.3
Masala || 0 || North,South Indian || Ajmer || Ram Ganj || Mess || None || NEW
我想改变以下的值:
根据特定菜肴类型的平均评分和基于计算的评分的评分类型对新评分进行评分
价格为 0,基于该特定区域的平均价格
我尝试改变价格:
读取 CSV 文件
data = pd.read_csv('/content/Ajmer.csv')
计算区域平均价格
gregion = round(data.groupby('Region')['Price'].mean())
试图替换价格列的0
data['Price'] = data['Price'].replace(0, gregion[data['Region']])
但我的价格栏没有改变。
我尝试更改评级:
读取 CSV 文件
data2 = pd.read_csv('/content/Ajmer.csv')
创建单独的数据框,使其不会影响平均值。
filtered_rating = data2[(data2['Rating'] == 'NEW') | (data2['Rating'] == '-') | (data2['Rating'] == 'Opening')]
从原始数据中删除2
data2.drop(data2.loc[data['Rating']=='NEW'].index, inplace=True)
data2.drop(data2.loc[data['Rating']=='-'].index, inplace=True)
data2.drop(data2.loc[data['Rating']=='Opening'].index, inplace=True)
计算美食类型的平均评分
c = round(data2.groupby('Cuisine Types')['Rating'].mean(),1)
这给了我如下输出:
Cuisine Types
Bakery 3.4
Confectionery 3.4
Dessert Parlor 3.5
...
Quick Bites 3.4
Sweet Shop 3.4
Name: Rating, dtype: float64
尝试替换值
filtered_rating['Rating'].replace('NEW', c[data2['Region']], inplace=True)
filtered_rating['Rating'].replace('-', c[data2['Region']], inplace=True)
filtered_rating['Rating'].replace('Opening', c[data2['Region']], inplace=True)
但我的评分栏没有改变。
预期输出
价格列中价格为零的行的特定区域的平均价格
评级列中评级为新的特定美食类型的平均评级
谁能帮我做这件事?
提前致谢! 我会很高兴得到您的帮助
【问题讨论】:
标签: python-3.x pandas dataframe