【python数据分析的基础知识】— 取指定序列为某些值时对应其他序列的值

文章目录

  • 一、需求场景
  • 二、实现思路
  • 三、实现过程


一、需求场景

有两个内容一一对应的序列,分别为A,B。我们希望根据已知A序列中的某些字段,提取出B序列的对应的值。本例中,A,B序列分别为广东省地市编号及地市编号对应的名称。要求我们根据A序列广东省地市编号取其对应的中文名称。最后,输出结果为列表类型。

二、实现思路

方法一:列表+循环

1、确定要取地市编号列的城市编号
2、返回地市编号列的索引
3、对应取地市名称列的信息

方法二:使用dataframe结构

1、将地市编号列和地市名称列生成一个dataframe结构表
2、根据确定要取地市编号列的城市编号取对应取地市名称列的信息

三、实现过程

地市编号列和地市名称列分别为:

area_code = ['755','200','769','757','760','752','750','754','756','759','668','763','758','663','753','751','662','762','768','660','766']
area_name = ['深圳','广州','东莞','佛山','中山','惠州','江门','汕头','珠海','湛江','茂名','清远','肇庆','揭阳','梅州','韶关','阳江','河源','潮州','汕尾','云浮']

确定要取地市编号列的城市编号为:

area_code_list = ['755','668','750']

方法一:列表+循环

第一步:取确定要的地市编号列的索引。

area_code_index = []
for z in area_code_list:
	for x, y in list(enumerate(area_code)):
		if y == z:
			area_code_index.append(x)
print(area_code_index)
# 输出:
# [0, 10, 6]

另一种更简便的写法:使用列表推导式

area_code_index = [x for z in area_code_list for x, y in list(enumerate(area_code)) if y == z]

第二步:根据索引取对应取地市名称列的信息。

area_name_list = []			
for i in area_code_index:
	area_name_list.append(area_name[i])
print(area_name_list)
# 输出:
# ['深圳', '茂名', '江门']

另一种更简便的写法:使用列表推导式

area_name_list = [area_name[i] for i in area_code_index]	

方法二:使用dataframe结构

1、生成dataframe结构表

import pandas as pd
data = {"area_code":['755','200','769','757','760','752','750','754','756','759','668','763','758','663','753','751','662','762','768','660','766'],"area_name":['深圳','广州','东莞','佛山','中山','惠州','江门','汕头','珠海','湛江','茂名','清远','肇庆','揭阳','梅州','韶关','阳江','河源','潮州','汕尾','云浮']}
frame = pd.DataFrame(data)
frame

2、根据确定要取地市编号列的城市编号取对应取地市名称列的信息

写法一:

area_code_list = ['755','668','750']
area_name_list  = frame['area_name'][frame['area_code'].isin(area_code_list)]
list(area_name_list)
# 输出:
# ['深圳', '茂名', '江门']

写法二:

addrs_corp_list=['755','200','769']	
area_name_list = frame.loc[:,'area_name'][frame['area_code'].isin(area_code_list)]
list(area_name_list)
# 输出:
# ['深圳', '茂名', '江门']

两种写法都可以实现取指定列为某些值的行

你可能感兴趣的:(python数据分析基础知识,python,数据分析,开发语言)