python-按行更新数据帧但不更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-按行更新数据帧但不更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1545字,纯文字阅读大概需要3分钟。
内容图文
我正在遍历数据框,并尝试将值添加到每一行的特定列中,但是当我打印结果数据框时,值不存在
#add two new blank columns to the dayData dataframe
dayData["myValue1"]=""
dayData["myValue2"]=""
#iterate over the dataframe
for idxDay, row in dayData.iterrows():
do something.....
#interate again through the dataframe
for idxRange, row1 in dayData.iterrows():
do something else....
calculate value1
calculate value2
#write the result for value1 and value2 to the dayData dataframe
row["myValue1"]=value1
row["myValue2"]=value2
print(dayData)
value1和value 2的值是正确的,即使当我硬编码value1 = 1和value2 = 2时(当我打印dayData时,应更新myValue1和myValue2列之后的列,它们也不包含任何数据).
最终的dayData数据框应该看起来像
vwap last volume ratio myLong myShort
0 301.071871 301.221525 43133218.0 1.000497 1 2
1 215.545413 213.791400 349730738.0 0.991862 3 3
但是我得到的只是:
vwap last volume ratio myLong myShort
0 301.071871 301.221525 43133218.0 1.000497
1 215.545413 213.791400 349730738.0 0.991862
解决方法:
代替分配给行,而是分配给带有索引的数据框.该行是该行的副本,对其所做的更改将不会保留在父数据框中.
代替:
row["myValue1"]=value1
row["myValue2"]=value2
做:
dayData.loc[idxDay, "myValue1"]=value1
dayData.loc[idxDay, "myValue2"]=value2
进一步的例子:
df = pd.DataFrame([1], ['a'], ['A'])
print df
A
a 1
for i, r in df.iterrows():
r.loc['B'] = 2
print df
A
a 1
for i, r in df.iterrows():
df.loc[i, 'B'] = 2
print df
A B
a 1 2.0
清楚地表明分配给行不起作用.分配给数据框.
内容总结
以上是互联网集市为您收集整理的python-按行更新数据帧但不更新全部内容,希望文章能够帮你解决python-按行更新数据帧但不更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。