Pandas合并含缺失行的数据:如何为缺失值填充默认值?
解决方法
要保留SERVICES中的所有服务(包括TIMES里没有对应数据的条目)并填充默认时间,你需要两步操作:左连接+缺失值填充:
- 使用
how='left'执行左连接,确保SERVICES的所有行都被保留,即使TIMES中没有匹配的Ref_Id - 用
fillna()把TIMES列的缺失值(NaN)替换成默认值15
完整代码示例
import pandas as pd # 构造示例数据 times = pd.DataFrame({ 'Ref_Id': [1, 2, 3], 'TIMES': [30, 15, 10] }) services = pd.DataFrame({ 'Ref_ID': [1, 2, 3, 4], 'Name': ['Mowing', 'Raking', 'Blowing', 'Trimming'] }) # 左连接,保留services的所有行 services_merged = pd.merge(services, times, left_on='Ref_ID', right_on='Ref_Id', how='left') # 填充TIMES列的缺失值为15 services_merged['TIMES'] = services_merged['TIMES'].fillna(15) # 可选:删除重复的Ref_Id列 services_merged = services_merged.drop('Ref_Id', axis=1) print(services_merged)
输出结果
Ref_ID Name TIMES 0 1 Mowing 30.0 1 2 Raking 15.0 2 3 Blowing 10.0 3 4 Trimming 15.0
为什么之前的尝试没解决?
inner连接只保留两边都匹配的行,所以Trimming会被过滤掉outer连接会保留两边所有行,但缺失的TIMES仍会显示NaN,需要手动填充left连接本身是正确选择,但你可能没做后续的缺失值填充步骤,所以看不到默认值
内容的提问来源于stack exchange,提问作者robster
相关产品推荐
相关产品推荐

