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

如何将Pandas中同file列值对应的source列统一替换为非unknown值

解决Pandas DataFrame中同一分组替换'unknown'值的问题

示例数据

先重现你的测试数据:

import pandas as pd

df_test = pd.DataFrame(data=None, columns=['file','source'])
df_test.file = ['file_1', 'file_1', 'file_2', 'file_2', 'file_3', 'file_3']
df_test.source = ['nasa', 'unknown', 'esa', 'unknown', 'jaxa', 'unknown']

解决方案

你可以通过分组填充的方式,将同一file分组内的'unknown'替换为该组内的有效source值,以下是两种简洁的实现方式:

方法1:利用缺失值填充(推荐)

先将'unknown'转为缺失值,再按file分组后用组内的第一个有效值填充所有行:

# 将'unknown'替换为Pandas缺失值
df_test['source'] = df_test['source'].replace('unknown', pd.NA)
# 按file分组,用每组的非缺失值填充整组
df_test['source'] = df_test.groupby('file')['source'].transform('first')

方法2:直接分组筛选有效值

通过lambda函数在分组内直接筛选出非'unknown'的第一个值,并应用到组内所有行:

df_test['source'] = df_test.groupby('file')['source'].transform(
    lambda x: x[x != 'unknown'].iloc[0]
)

验证结果

执行上述任一方法后,查看source列的结果:

print(df_test['source'].tolist())
# 输出: ['nasa', 'nasa', 'esa', 'esa', 'jaxa', 'jaxa']

注意事项

  • 确保每个file分组内只有一个非'unknown'的有效值,如果存在多个不同的有效值,需要先处理数据冲突问题。

内容的提问来源于stack exchange,提问作者Marcus K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:07:06