python - 如何修改我正在迭代的 pandas 数据框?
问题描述
我知道 - 这是禁止的。但是当 optimize.curve_fit 遇到一行(可能是 5 个)相同的值时,它会退出并返回一条直线。
我不想删除所有重复项,但我想我可能会删除任何相同三胞胎的中间成员,而不会对合身造成太大损害。
所以我想使用 iterrows,并在我去的时候删除行,但我知道我可能正在处理副本,而不是原件。
或者,我可以用索引做一个老式的循环。
我怎样才能安全地做到这一点,并且每次删除时都会更新循环的结束参数?
这是一个例子:
i = 1
while i < len(oneDate.index)-1:
print("triple=",oneDate.at[i-1,"Nprem"],oneDate.at[i,"Nprem"],oneDate.at[i+1,"Nprem"])
if oneDate.at[i,"Nprem"]==oneDate.at[i-1,"Nprem"] and oneDate.at[i,"Nprem"]==oneDate.at[i+1,"Nprem"]:
print("dropping i=",i,oneDate.at[i,"Nprem"])
oneDate.drop([i])
oneDate = oneDate.reset_index(drop=True)
pause()
else: i = i +1
我假设当我放下并重置时,下一个项目将移动到已删除的插槽中,因此我不必增加索引。但它没有,所以我得到了一个无限循环。
解决方案
好的,我找到了 , inplace=True 选项,它现在可以正常工作了。
推荐阅读
- android - 工具栏在 Android 9、API 28 中未显示高度
- c - 如何使用 free 释放使用 malloc 进行的堆分配?
- swift - 基于单元的基于视图的 NSTableView 的内存问题
- amazon-web-services - Amazon Sumerian 能否对来自 Amazon SNS 的事件做出反应,还是 IoT 是我唯一的途径?
- android - android post数据发送中的连接拒绝
- r - 如何根据行和列总数获得所有可能的单元格频率组合
- javascript - 如何根据输入的值从状态中过滤数据
- rust - 重载运算符所需的 T、&T 和 &mut T 中的最小对
- python - 新项目检查缺少的 ID 并创建它
- java - 有什么方法可以将 smali 转换为 java 进行编辑,反之亦然