如何将城市数据列表转换为结构化的pandas DataFrame
解决方法
可以通过字符串解析+正则匹配的方式提取所需字段,再构建结构化DataFrame,具体步骤如下:
步骤1:导入依赖
import pandas as pd import re
步骤2:定义原始数据
List = ['City Population', '1 New York, NY 8,175,133 \xa0Biggest city is 2.6% of U.S. population', '2 Los Angeles, CA 3,792,621 \xa0Top 2 cities are 3.8% of U.S. population', '3 Chicago, IL 2,695,598 \xa0Top 3 cities are 4.7% of U.S. population']
步骤3:解析数据行
跳过列表第一个无效表头,用正则匹配每行的排名、城市、人口:
# 定义正则模式:匹配 排名(数字) + 城市名(任意字符直到人口) + 人口(带逗号的数字) pattern = r'^(\d+)\s+(.*?)\s+([\d,]+)\s+.*$' processed_data = [] for line in List[1:]: # 跳过第一个表头行 match = re.match(pattern, line) if match: rank = match.group(1) city = match.group(2) population = match.group(3) processed_data.append([rank, city, population])
步骤4:构建结构化DataFrame
df = pd.DataFrame(processed_data, columns=['RANK', 'CITY', 'POPULATION']) print(df)
输出结果
RANK CITY POPULATION 0 1 New York, NY 8,175,133 1 2 Los Angeles, CA 3,792,621 2 3 Chicago, IL 2,695,598
补充说明
如果完整列表里存在特殊格式的行,正则可以适当调整,但当前模式能覆盖示例里的所有情况。也可以用str.split()方式拆分,但正则更稳定,能避免城市名含空格的问题。
内容的提问来源于stack exchange,提问作者Hansolo414
相关产品推荐
相关产品推荐

