我的任务是将列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: 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