You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas处理含Nan值的不规范txt文件并转换数据结构

解决思路
  • 第一步:对lat列使用前向填充(ffill()),给每一行标记所属的城镇纬度,作为后续分组的依据
  • 第二步:按填充后的纬度分组,提取每个分组内除首行(存城镇名、经纬度的行)之外的Town列数值,作为当前纬度对应的数值列表
  • 第三步:将不同长度的数值列表补全为等长(短列表末尾补np.nan),即可转换为目标格式的DataFrame

可直接运行的实现代码如下:

import pandas as pd
import numpy as np

# 你的原始DataFrame
data = {'Town':['Chicago', 1.11, 1.45, 0.86, 2.68, np.nan, 'Philly', 1.35, 1.55, 3.7], 'lat':[41.878, np.nan, np.nan, np.nan, np.nan, np.nan, 39.9526, np.nan, np.nan, np.nan], 'long':[-87.6298, np.nan, np.nan, np.nan, np.nan, np.nan, -75.165, np.nan, np.nan, np.nan]}
df = pd.DataFrame(data)

# 前向填充lat列生成分组键
df['group_key'] = df['lat'].ffill()

# 按分组键收集对应数值
grouped_data = df.groupby('group_key')['Town'].apply(lambda x: list(x.iloc[1:])).to_dict()

# 格式化key为四位小数字符串,适配目标格式
grouped_data = {f"{key:.4f}": value for key, value in grouped_data.items()}

# 补全不等长列表
max_length = max(len(val) for val in grouped_data.values())
for key in grouped_data:
    grouped_data[key] += [np.nan] * (max_length - len(grouped_data[key]))

# 生成目标DataFrame
df_wanted = pd.DataFrame(grouped_data)

该方案兼容不同长度的数值分组,无论对应数值是13条还是100条都可以正常处理。

内容的提问来源于stack exchange,提问作者rypo06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:45:02