如何在Pandas一对一DataFrame中根据一列值获取另一列字符串值?
解决方法
单次查询的简便写法
不用转字典,直接用布尔索引配合loc定位后提取单个值即可:
# 两种方式都能拿到目标字符串 df.loc[df['State'] == 'Alaska', 'Abbr'].iloc[0] # 或者用.item()更直接 df.loc[df['State'] == 'Alaska', 'Abbr'].item()
loc用来定位符合条件的行和目标列,返回仅含一个元素的Series,iloc[0]或item()能直接取出这个元素,得到你需要的'AK'字符串。
多次查询推荐转字典
如果需要频繁根据State查询Abbr,转成字典是更高效的选择,一次构建后可无限次快速取值:
# 构建State到Abbr的映射字典 state_abbr_map = df.set_index('State')['Abbr'].to_dict() # 直接通过键取值 state_abbr_map['Alaska'] # 返回'AK'
由于你的数据是一对一匹配的,这种映射不会有冲突,使用起来非常便捷。
内容的提问来源于stack exchange,提问作者jfang
相关产品推荐
相关产品推荐

