Python 错误消息";试图在来自数据帧的切片副本上设置一个值";数据中有nan
我的任务是将列Python 错误消息";试图在来自数据帧的切片副本上设置一个值";数据中有nan,python,pandas,Python,Pandas,我的任务是将列dcpower和acpower(以适用者为准)从千瓦转换为瓦特(如果当前单位为千瓦)。我的数据包含nan,但我不想删除它们。下面是我的脚本 if powerunit == 'watt': pass if powerunit == 'kW': if 'dcpower' in df.columns: df['dcpower'] = (df['dcpower'] * 1000.0).copy() else: pass if
dcpower
和acpower
(以适用者为准)从千瓦转换为瓦特(如果当前单位为千瓦)。我的数据包含nan
,但我不想删除它们。下面是我的脚本
if powerunit == 'watt':
pass
if powerunit == 'kW':
if 'dcpower' in df.columns:
df['dcpower'] = (df['dcpower'] * 1000.0).copy()
else:
pass
if 'acpower' in df.columns:
df['acpower'] = (df['acpower'] * 1000.0).copy()
else:
pass
该脚本可以工作,但它返回SettingWithCopyWarning:试图在数据帧的切片副本上设置一个值。尝试改用.loc[row\u indexer,col\u indexer]=value
。。。
#这是由InteractiveShellApp.init_path()添加回来的。
通过在末尾添加df.loc['power']
或df.iloc['power']
和.copy()
,它在我的机器中不起作用
df["dcpower"] = (df.iloc["dcpower"] * 1000.0, "dcpower").copy()
返回无法使用非整数键按位置索引编制索引
样本数据
Iac power wind Tamb RH ghi dhi WDir rain
Timestamp
2019-04-02 17:35:00 3.62 0.84 nan 27.82 nan 194.10 33.56 28.52 nan
2019-04-02 17:40:00 3.04 0.69 nan 27.59 nan 152.22 35.96 28.58 nan
2019-04-02 17:45:00 2.51 0.54 nan 27.52 nan 112.86 34.04 28.78 nan
2019-04-02 17:50:00 2.11 0.40 nan 27.43 nan nan 34.51 29.00 nan
2019-04-02 17:55:00 1.86 nan nan 27.32 nan nan 30.63 29.10 nan
感谢您的帮助
编辑:
Python:3.7.4
JupyterLab:1.1.4对我来说,你的代码运行得非常好,没有错误:
df = pd.DataFrame({
'dcpower':[4,5,4,5,5,4],
'acpower':[7,8,9,4,2,3],
})
powerunit = 'kW'
if powerunit == 'kW':
if 'dcpower' in df.columns:
df['dcpower'] = (df['dcpower'] * 1000.0)
else:
pass
if 'acpower' in df.columns:
df['acpower'] = (df['acpower'] * 1000.0)
else:
pass
print (df)
dcpower acpower
0 4000.0 7000.0
1 5000.0 8000.0
2 4000.0 9000.0
3 5000.0 4000.0
4 5000.0 2000.0
5 4000.0 3000.0
你的代码不简单?是否可以显示所有代码?请尝试将nan替换为0。这可能会引起一场灾难error@ShahirAnsari-不,你错了。@jezrael。代码是完整的。我只是将数据帧的名称更改为df
。好的,所以我不明白。缺少如何创建数据帧。此外,我认为问题在于某些代码中,您认为无法影响错误,但不幸的是,它会导致错误。因为这个错误的问题,它显示在任何一行中,99%在另一行中,错误的原因在哪里对不起,我忘了说它工作,但返回一个警告。这篇文章已经编辑好了,你写的东西很好,都是你的代码吗?或者缺少一些代码行?使用df2=df.copy()
复制整个df
后,它现在可以工作,然后将脚本应用于df2
,而不是df
。然而,我仍然很好奇是否可以在不创建df.@k.ko3n的重复问题的情况下解决这个问题,因为您的代码完全丢失了,所以不可能找到答案。