Python Pandas比较数据集中的属性并计算特定城市的总数

时间:2018-12-12 15:34:51

标签: python database pandas dataframe

在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中的“城市”属性进行比较。

假设每个报纸阅读者都从他们的居住城市读过一篇论文。列出操作以计算每个城市的报纸阅读者总数。

2 个答案:

答案 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]

是,对第二个问题使用groupbysum,您可以在此问题上做很多改进,以便随时解决。通过将文本从数据集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的链接。本质上,您正在执行与第一个示例相同的操作,只是您仅按一列而不是两列进行分组,并且采用总和而不是均值。如果您遇到困难,我可以给您提供一个代码示例,我意识到您特别要求不要这样做。