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

如何用DataFrame2/3替换DataFrame1中From_、To_列的索引引用值?

解决方法

可以通过索引映射实现需求,核心是将DataFrame1中从1开始的索引转换为pandas默认的0起始索引,再匹配对应DataFrame的Name列值。

步骤说明

  • From_列:将列中数值减1,作为DataFrame3的行索引,提取对应Name值替换原数值,保留NaN
  • To_列:将列中数值减1,作为DataFrame2的行索引,提取对应Name值替换原数值,保留None

完整代码实现

import pandas as pd

# 构造初始DataFrame
df1 = pd.DataFrame({
    'S': ['x']*11,
    'From_': [None, None, None, 1.0, 1.0, None, None, None, None, None, 1.0],
    'To_': [None, None, None, 2, 5, None, None, None, None, None, None]
})
df2 = pd.DataFrame({
    'A': [None]*5,
    'Name': ['Name1', 'Name2', 'Name3', 'Name4', 'Name5']
})
df3 = pd.DataFrame({
    'A': [None]*4,
    'Name': ['Name6', 'Name7', 'Name9', 'Name10']
})

# 处理From_列:转换索引并映射
df1['From_'] = df1['From_'].apply(
    lambda x: df3.loc[int(x)-1, 'Name'] if pd.notna(x) else x
)

# 处理To_列:转换索引并映射
df1['To_'] = df1['To_'].apply(
    lambda x: df2.loc[int(x)-1, 'Name'] if pd.notna(x) else x
)

print(df1)

输出结果

S  From_    To_
0   x    NaN   None
1   x    NaN   None
2   x    NaN   None
3   x  Name6  Name2
4   x  Name6  Name5
5   x    NaN   None
6   x    NaN   None
7   x    NaN   None
8   x    NaN   None
9   x    NaN   None
10  x  Name6    NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:53:32