Joyful Pandas 索引 练习3.2 巧克力数据集

题目

现有一份关于巧克力评价的数据集:

1
2
df = pd.read_csv('../data/chocolate.csv')
df.head(3)
  1. 把列索引名中的\n替换为空格。
  2. 巧克力Rating评分为1至5,每0.25分一档,请选出2.75分及以下且可可含量Cocoa Percent高于中位数的样本。
  3. Review DateCompany Location设为索引后,选出Review Date在2012年之后且Company Location不属于France, Canada, Amsterdam, Belgium的样本。

第 1 问

1
2
df.columns = df.columns.map(lambda x: x.replace('\n', ' '))
df.head()

第 2 问

1
2
3
cocoa_percent_median = df["Cocoa Percent"].apply(lambda x: float(x[:-1]) / 100).median()

df[(df.Rating <= 2.75) & (df["Cocoa Percent"].apply(lambda x: float(x[:-1]) / 100) > cocoa_percent_median)]

第 3 问

Review DateCompany Location设为索引后,选出Review Date在2012年之后且Company Location不属于France, Canada, Amsterdam, Belgium的样本。

1
2
df.set_index(["Review Date", "Company Location"], inplace=True)
df.query('(`Review Date` > 2012) & (`Company Location` not in ["France", "Canada", "Amsterdam", "Belgium"])')

我尝试用loc去做这一小题, 但没能做到.