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

如何在pandas dataframe中获取指定单元格上下各3行及所属国家数据

功能实现步骤

首先你的原始DataFrame中Country列仅每个国家的第一条记录有值,其余为空,所以第一步需要先补全所有行的所属国家字段,再做索引定位和切片查询即可。

1. 导入依赖并构造示例数据

import pandas as pd
import numpy as np

# 构造与你提供的结构一致的测试数据
data = {
    "Country": ["India", np.nan, np.nan, np.nan, np.nan, np.nan, "USA", np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
    "States": ["Banglore", "Pune", "Delhi", "Maharasthra", "Hyderabad", "Gujarat", "Arizona", "Hawaii", "California", "Missouri", "Iowa", "Colorado", "Alaska", "Texas"]
}
df = pd.DataFrame(data)

2. 补全国家字段

用向前填充的方法把空值的国家位置填充为对应国家:

df['Country'] = df['Country'].ffill()

3. 封装查询函数

def get_state_related_info(target_state, before_count=3, after_count=3):
    # 定位目标州的行索引
    target_index = df[df['States'] == target_state].index[0]
    # 获取所属国家
    belong_country = df.loc[target_index, 'Country']
    # 计算切片范围,自动处理边界避免索引越界
    start = max(0, target_index - before_count)
    end = min(df.index.max(), target_index + after_count)
    # 提取对应范围的州列表
    related_states = df.loc[start:end, 'States'].tolist()
    return belong_country, related_states

4. 调用测试

# 测试查询Iowa
country, states = get_state_related_info("Iowa")
print("所属国家:", country)
print("关联州列表:", states)

输出结果

所属国家: USA
关联州列表: ['Hawaii', 'California', 'Missouri', 'Iowa', 'Colorado', 'Alaska', 'Texas']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:02