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

如何将DataFrame的行/单元格复制到新DataFrame?附实现示例

Pandas:复制DataFrame行/单元格到新DataFrame及示例实现

一、基础操作:复制行/单元格到新DataFrame

1. 复制整行到新DataFrame

若要复制df_a中指定索引的行到df_b,推荐使用concat(适配pandas新版本):

import pandas as pd

# 示例:复制df_a第0行到df_b
row_to_copy = df_a.loc[[0]]  # 双层方括号保持DataFrame格式
df_b = pd.concat([df_b, row_to_copy], ignore_index=True)

旧版本兼容可使用append(新版本已弃用):

row_to_copy = df_a.loc[0]
df_b = df_b.append(row_to_copy, ignore_index=True)

2. 复制单个单元格到新DataFrame

直接获取指定单元格值后赋值给新DataFrame对应位置:

# 获取df_a中索引0、列'attrb1'的单元格值
cell_value = df_a.at[0, 'attrb1']
# 赋值给df_b第0行的'value1'列
df_b.at[0, 'value1'] = cell_value

二、针对你的示例场景实现

根据你提供的数据集和目标输出,完整实现代码如下:

1. 定义示例数据

import pandas as pd

# 构造df__data
df__data = pd.DataFrame({
    'key1': ['sfdg', 'afrtf'],
    'key2': ['dagd', 'yxcbb'],
    'key3': ['dgsg', 'ertet'],
    'attrb1': [12, 34],
    'attrb2': [43, 45],
    'attrb3': [24, 34]
})

# 构造df__attributes_to_compare
df__attributes_to_compare = pd.DataFrame({
    'info_a': ['attrb1', 'attrb1'],
    'info_b': ['attrb2', 'attrb3']
})

2. 实现匹配逻辑并生成new_df

# 初始化空结果DataFrame
new_df = pd.DataFrame(columns=['key1', 'key2', 'key3', 'value1', 'value2'])

# 遍历主数据的每一行
for index, row in df__data.iterrows():
    # 提取当前行的key列数据
    key_data = row[['key1', 'key2', 'key3']].to_dict()
    # 遍历每一组需要对比的属性对
    for _, compare_row in df__attributes_to_compare.iterrows():
        col_a = compare_row['info_a']
        col_b = compare_row['info_b']
        # 当属性值不匹配时,添加到结果表
        if row[col_a] != row[col_b]:
            new_record = {
                **key_data,
                'value1': row[col_a],
                'value2': row[col_b]
            }
            new_df = pd.concat([new_df, pd.DataFrame([new_record])], ignore_index=True)

最终输出结果

key1key2key3value1value2
sfdgdagddgsg1243
sfdgdagddgsg1224
afrtfyxcbbertet3445

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:15:33