我有一个数据帧:
High Low Close
Date
2009-02-11 30.20 29.41 29.87
2009-02-12 30.28 29.32 30.24
2009-02-13 30.45 29.96 30.10
2009-02-17 29.35 28.74 28.90
2009-02-18 29.35 28.56 28.92
Run Code Online (Sandbox Code Playgroud)
和一个布尔系列:
bools
1 True
2 False
3 False
4 True
5 False
Run Code Online (Sandbox Code Playgroud)
我如何使用布尔数组从数据框中选择以获得如下结果:
High
Date
2009-02-11 30.20
2009-02-17 29.35
Run Code Online (Sandbox Code Playgroud) 首先,我构建一个新的DataFrame框架.然后通过从帧中过滤一些数据来创建一个新的frame2.现在我想为frame2分配一些值:
import numpy as np
from pandas import DataFrame
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California'])
mask = frame['Texas'] > 1
print frame[mask]
frame2 = frame.loc[mask]
frame2.loc['c', 'Ohio'] = 'me'
print frame2
Run Code Online (Sandbox Code Playgroud)
但我得到了这个警告:
C:\Python27\lib\site-packages\pandas\core\indexing.py:461: 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
Run Code Online (Sandbox Code Playgroud)
尽管我使用了推荐的.loc语法,为什么我仍然得到这个警告?我该怎么做才能避免这种警告?