- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个数据框,如下所示:
df =
index P01 unten oben RV R2_simu
2014-05-23 03:00:00 0.0 0.0 0.9 0.8 0
2014-05-23 06:00:00 0.5 0.7 1.4 0.1 0
2014-05-23 07:00:00 1.0 2.4 2.4 0.6 0
2014-05-23 08:00:00 0.55 15.7 28.0 0.3 0
....
然后我尝试循环:
for i in range(0, len(df)):
if df.P01[i] >= df.RV[i]:
df.R2_simu[i] = 0
elif df.P01[i] < df.RV[i]:
df.R2_simu[i] = df.RV[i]
else:
pass
我希望收到如下所示的新数据框,
df =
index P01 unten oben RV R2_simu
2014-05-23 03:00:00 0.0 0.0 0.9 0.8 0.8
2014-05-23 06:00:00 0.5 0.7 1.4 0.1 0
2014-05-23 07:00:00 1.0 2.4 2.4 0.6 0
2014-05-23 08:00:00 0.55 15.7 28.0 0.6 0.6
但是,我收到消息SettingWithCopyWarning,我尝试重写
df.R2_simu[i] = df.RV[i]
到
df.R2_simu[i] = df.RV[i].copy()
但是问题好像还是存在。
有人知道怎么处理吗?提前致谢!
最佳答案
尝试使用 loc
设置数据框上的值索引,这可能是在内部创建并写入 df
副本的原因。将循环更改为
for i in range(0, len(df)):
if df.P01[i] >= df.RV[i]:
df.loc[i,"R2_simu"] = 0
elif df.P01[i] < df.RV[i]:
df.loc[i,"R2_simu"] = df.RV[i]
else:
pass
更好的是你不使用循环,而是使用向量访问:
df.loc[df.loc[:,"P01"] >= df.loc[:,"RV"],"R2_simu"] = 0
df.loc[df.loc[:,"P01"] < df.loc[:,"RV"],"R2_simu"] = df.loc[df.loc[:,"P01"] < df.loc[:,"RV"],"RV"]
由内而外的解释
df.loc[:, "col"]
=> 获取每一行 :
和列 col
df.loc[x1 >= x2, "R2_simu"]
=> 只考虑 x1 >= x2
的行和 R2_simu
的列>
关于python - Pandas 中的 SettingWithCopyWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50730073/
假设 A 列是基于时间的,B 列是工资。 我在 for 循环中使用 if 语句,试图查找“所有低于前一个但也大于后一个的工资”。然后将新值(“YES”)分配给满足条件的行的另一列(C 列)。最后,我想
我有一个作为数据框导入的 csv 文件。该数据框经过多个过滤步骤。数据也会根据条件在列之间移动。 import numpy as np import pandas as pd df = pd.read
我一直通过使用 .loc[: (foo, bar)] 构造来避免大多数 SettingWithCopy 警告。 但我不知道如何正确构造一个案例: for sec in security_list:
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个答案) 关闭 2 年前。 我正在尝试为我的数据创建一个名为
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个答案) 关闭 2 年前。 我尝试了以下代码将列转换为“日期
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个回答) 关闭3年前. 我想用 NaN 替换 Pandas D
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个回答) 关闭5年前. Python 3.4 和 Pandas
numbers = LabelEncoder() State_Data['Quality'] = numbers.fit_transform(State_Data['Quality Paramet
我正在使用通过子设置前一个创建的数据框“副本” - 见下文: import random import pandas as pd df = pd.DataFrame({'data':list(rand
我有一个数据框,如下所示: df = index P01 unten oben RV R2_simu 2014-05-23 03:00:00 0.0
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个答案) 关闭 2 年前。 正在处理来自 的文件 http:
考虑以下示例代码 import pandas as pd import numpy as np pd.set_option('display.expand_frame_repr', False) fo
我正在尝试通过索引选择来设置数据框中列的值。 myindex = (df['city']==old_name) & (df['dt'] >= startDate) & (df['dt'] < endD
使用 SettingWithCopyWarning,有时它会指向您模块中触发警告的确切代码行(例如 here ),有时则不会(例如 here )。 没有遍历每一行代码(如果你正在审查数百行代码,这听起
我有以下代码,但不太明白为什么它会抛出警告。我读过 documentation但仍然无法理解为什么这种用法会导致警告。任何见解将不胜感激。 >>> df = pandas.DataFrame({'a'
所以我使用了一个空数据框 df=data[['ID','Matrix','Name','Country', 'Units']] df['Value']='' 我用这样的代码填充它,它在 df.Matr
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (20 个答案) 关闭 3 年前。 在我不希望出现的情况下,我会收到
这个问题在这里已经有了答案: df.loc causes a SettingWithCopyWarning warning message (1 个回答) 关闭5年前。 在 pandas 数据框中,我
背景 我刚刚将我的 Pandas 从 0.11 升级到 0.13.0rc1。现在,该应用程序弹出许多新警告。其中一个是这样的: E:\FinReporter\FM_EXT.py:449: Settin
这个问题在这里已经有了答案: How to deal with SettingWithCopyWarning in Pandas (16 个回答) 11 个月前关闭。 试图弄清楚为什么下面的函数会返回
我是一名优秀的程序员,十分优秀!