Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误消息";试图在来自数据帧的切片副本上设置一个值";数据中有nan_Python_Pandas - Fatal编程技术网

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的重复问题的情况下解决这个问题,因为您的代码完全丢失了,所以不可能找到答案。