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

Pandas如何基于Mobile_phone列值复制行并替换Work_phone列内容

实现方案

整体逻辑分4步:

  • 筛选出Mobile_phone列为有效值的行
  • 复制上述行,将复制行的Work_phone值替换为原行的Mobile_phone值
  • 合并原数据与复制得到的新行,按原行顺序排序保证原行在前、对应新行在后
  • 清空所有行的Mobile_phone列内容

通用实现代码

如果你已经通过pd.read_csv读入数据存为df,可以直接使用以下代码:

import pandas as pd

# 1、定义有效值判断规则,可根据实际数据的空值占位符调整
has_valid_mobile = df['Mobile_phone'].notna() & (df['Mobile_phone'].astype(str).str.strip() != '')

# 2、生成要追加的新行
new_rows = df[has_valid_mobile].copy()
new_rows['Work_phone'] = new_rows['Mobile_phone']

# 3、合并原数据和新行,调整顺序和示例一致
df['temp_sort1'] = df.index
df['temp_sort2'] = 0
new_rows['temp_sort1'] = new_rows.index
new_rows['temp_sort2'] = 1
df_final = pd.concat([df, new_rows], ignore_index=True)
df_final = df_final.sort_values(['temp_sort1', 'temp_sort2']).drop(columns=['temp_sort1', 'temp_sort2'])

# 4、清空所有行的Mobile_phone列
df_final['Mobile_phone'] = ''

完整可运行测试代码

对应你给出的示例数据,可以直接运行验证效果:

import pandas as pd

# 构造示例初始数据
data = {
    'Full name': ['Amanda Brown', 'Bert Sutherland', 'Charlie Chaplin', 'Derek Simpson'],
    'Work_phone': ['1234567896', '1234567897', '1234567898', '1234567899'],
    'Mobile_phone': ['77895641225', '', '', '77895641228'],
    'Company': ['A company', 'B company', 'C company', 'D company']
}
df = pd.DataFrame(data)

# 执行处理逻辑
has_valid_mobile = df['Mobile_phone'].notna() & (df['Mobile_phone'].astype(str).str.strip() != '')
new_rows = df[has_valid_mobile].copy()
new_rows['Work_phone'] = new_rows['Mobile_phone']

df['temp_sort1'] = df.index
df['temp_sort2'] = 0
new_rows['temp_sort1'] = new_rows.index
new_rows['temp_sort2'] = 1
df_final = pd.concat([df, new_rows], ignore_index=True)
df_final = df_final.sort_values(['temp_sort1', 'temp_sort2']).drop(columns=['temp_sort1', 'temp_sort2'])

df_final['Mobile_phone'] = ''

# 打印结果
print(df_final)

如果不需要严格匹配示例的行排序,只需要保证数据正确,可以去掉临时排序列的相关逻辑,合并后直接重置索引即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:02