为何无法将DataFrame中Pandas Series的值复制到另一DataFrame对应Series?
问题原因及解决方法
为什么赋值没生效?
你用的是链式索引(连续两次方括号操作):rawdata[rawdata.index == i]['qc'] = values。这里rawdata[rawdata.index == i]会返回原DataFrame的一个临时副本,后续对这个副本的qc列赋值,只会修改这个临时对象,原rawdata不会有任何变化——因为副本和原数据是完全独立的,修改副本不会影响原数据。
正确的赋值方式
pandas推荐用loc直接定位原数据的行和列,确保赋值直接作用在原DataFrame上:
方法1:针对单个唯一索引值
rawdata.loc[i, 'qc'] = values
方法2:针对可能重复的索引(多个相同时间戳)
如果你的索引存在重复值,先做布尔掩码再用loc赋值:
mask = rawdata.index == i rawdata.loc[mask, 'qc'] = values
额外优化:简化values的获取
你原来获取值的代码可以简化:
# 原写法 values = list(df1.loc[i]['qc'].values) # 简化后 values = df1.loc[i, 'qc'].tolist()
内容的提问来源于stack exchange,提问作者Corey4005
相关产品推荐
相关产品推荐

