如何在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
相关产品推荐
相关产品推荐

