在Python Pandas中我将如何处理?我将对问题2使用Groupby吗?我不想要代码的答案,只是伪代码或操作说明就可以了。
Dataset 1
CITY POPULATION
BOSTON 645,966
NEW YORK 8,336,697
CHICAGO 2,714,856
Dataset 2
Newspaper City Readers
Boston Globe Boston, MA 245572
New York Times New York, NY 1865318
Daily News New York, NY 516165
New York Post New York, NY 500521
Chicago Sun-Times Chicago, IL 470548
Chicago Tribune Chicago, IL 414930
列出操作(按顺序)以修改数据集2中“城市”属性中的每个值,以便可以将其直接与数据集1中的“城市”属性进行比较。
假设每个报纸阅读者都从他们的居住城市读过一篇论文。列出操作以计算每个城市的报纸阅读者总数。
答案 0 :(得分:1)
您可以从数据集2中获取城市的唯一值,然后使用该值有条件地遍历数据框。 简单地说:
# Get unique city names
city_list = dataset2.unique().tolist()
# Add mapping to correct city names
city_mapping = {
'Boston, MA':'BOSTON'
}
# Dynamically iterate and replace with correct value
for city in city_list:
dataset2.loc[dataset2.city == city,'city'] = city_mapping[city]
是,对第二个问题使用groupby和sum,您可以在此问题上做很多改进,以便随时解决。通过将文本从数据集2到数据集1进行部分匹配,您还可以动态生成city_mapping。
答案 1 :(得分:1)
首先匹配城市名称
city_dict = {
'Boston, MA':'BOSTON'
'New York, NY': 'NEW YORK'
'Chicago, IL': 'CHICAGO'
}
dataset2['CITY'] = dataset['City'].map(city_dict)
然后在“城市”列中对数据集2进行分组,并对“读者”列进行求和
这是指向Pandas documentation for groupby的链接。本质上,您正在执行与第一个示例相同的操作,只是您仅按一列而不是两列进行分组,并且采用总和而不是均值。如果您遇到困难,我可以给您提供一个代码示例,我意识到您特别要求不要这样做。