根据list找到df对应数据的两种常用方法

文章介绍了如何使用Python中的Pandas库,通过条件查询(cbg_features_df[census_block_group]==a)获取census_block_group对应的人口数据,以及如何使用merge方法合并数据,最终提取出特定列(census_block_group和Totalpopulation)以CSV格式输出。
摘要由CSDN通过智能技术生成

1.condition

import json
import sys
import pandas as pd
pd.set_option('display.max_columns', None)

cbg_features_df = pd.read_csv('cbg_features_2019.csv')

with open('cbg_lonlat_dict.json', 'r', encoding='utf-8') as f:
    cbg_lonlat_dict = json.load(f)

cbg_lonlat_dict_keys_list = list(cbg_lonlat_dict.keys())
int_list = [int(x) for x in cbg_lonlat_dict_keys_list]

cbg_total_population_list = []

for a in int_list:
    condition = cbg_features_df['census_block_group'] == a
    total_population = cbg_features_df[condition]['Total population'].iloc[0]
    cbg_total_population_list.append(total_population)

cbg_activate_df = pd.DataFrame({'cbg_id': cbg_lonlat_dict_keys_list, 'cbg_total_people': cbg_total_population_list})

print(cbg_activate_df)

核心代码其实就是这两行:

condition = cbg_features_df['census_block_group'] == a
total_population = cbg_features_df[condition]['Total population'].iloc[0]

2.merge

import json
import sys
import pandas as pd
pd.set_option('display.max_columns', None)

cbg_features_df = pd.read_csv('cbg_features_2019.csv')

with open('cbg_lonlat_dict.json', 'r', encoding='utf-8') as f:
    cbg_lonlat_dict = json.load(f)

cbg_lonlat_dict_keys_list = list(cbg_lonlat_dict.keys())
int_list = [int(x) for x in cbg_lonlat_dict_keys_list]

cbg_activate_df = pd.merge(pd.DataFrame({'census_block_group': int_list}), cbg_features_df, on='census_block_group', how='left')

cbg_activate_df = cbg_activate_df[['census_block_group', 'Total population']]

print(cbg_activate_df)

可以看到merge方法在做此类问题的时候比较优雅,核心代码列出如下:

cbg_activate_df = pd.merge(pd.DataFrame({'census_block_group': int_list}), cbg_features_df, on='census_block_group', how='left')
cbg_activate_df = cbg_activate_df[['census_block_group', 'Total population']]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值