首页 > 解决方案 > 为什么会出现错误 AttributeError: 'bool' object has no attribute 'copy' 显示但一些值正在按需要打印?

问题描述

import pandas as pd
import datetime
import numpy as np

df = pd.read_excel('/content/drive/My Drive/python/NSE 010120-181020.xlsx')

df.head()

df['Date'] = pd.to_datetime(df['Date'] , format='%Y-%m-%d')

df['Date'] = pd.to_datetime(df['Date'] , format='%d-%m-%Y')

df.info()

Date = df['Date']

Date

from datetime import datetime

df['Percentage Change'] = ((df['Open'] - df['Close'])/100).astype(float)

df['Percentage Change']



df['Marker'] = np.nan

for i in range(len(df['Marker'])):
  if df['Percentage Change'][i] > 0:
    df['Marker'][i] =='Profit'
  elif df['Percentage Change'][i] < 0:
    df['Marker'][i] = 'Loss'
  elif df['Percentage Change'][i] == 0:
    df['Marker'][i] = 'Flat'

df['Marker']

AttributeError                            Traceback (most recent call last)
<ipython-input-82-e9145deac6fc> in <module>()
  1 for i in range(len(df['Marker'])):
  2   if df['Percentage Change'][i] > 0:
  ----> 3     (df['Marker'][i] =='Profit').copy(deep=True)
  4   elif df['Percentage Change'][i] < 0:
  5     (df['Marker'][i] == 'Loss').copy(deep=True)

  AttributeError: 'bool' object has no attribute 'copy'

我将标记值设为 NaN,但损失值按需要打印。为什么利润和平面值是 nan 而不是损失值?这个错误是什么意思 AttributeError: 'bool' object has no attribute 'copy'

0       NaN
1      Loss
2       NaN
3       NaN
4       NaN
   ... 
195     NaN
196     NaN
197    Loss
198     NaN
199    Loss

标签: pandasdata-science

解决方案


你打错===。替换df['Marker'][i] =='Profit'df['Marker'][i] = 'Profit',看看它是否有效。

注意如果数据框不更新自身,也替换df['Marker'][i] =df.at[i, 'Marker'] =. 这是就地为单个单元格赋值的标准语法。


推荐阅读