数据中带有 nan 的错误消息"A value is trying to be set on a copy of a slice from a DataFrame"



我的任务是将列dcpoweracpower(以适用者为准(从千瓦转换为瓦特(如果它们的当前单位是千瓦(。我的数据包含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: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead...# This is added back by InteractiveShellApp.init_path()

通过在末尾添加df.loc['power']df.iloc['power'].copy(),它在我的机器中不起作用。

df["dcpower"] = (df.iloc["dcpower"] * 1000.0, "dcpower").copy()

返回Cannot index by location index with a non-integer key

示例数据


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

相关内容

最新更新