我开始研究熊猫,所以这可能是一个很明显的问题,但是我已经为它苦苦挣扎了一段时间,没有找到解决方法。
考虑此数据框:
import pandas_datareader as pdr
apple = pdr.DataReader('AAPL', data_source='yahoo',
start=datetime.datetime(2013, 1, 1),
end=datetime.datetime(2020, 1, 1))
现在,我可以简单地在此数据框中添加一个新列:
apple['new_column'] = np.arange(apple.shape[0])
但是,如果我使用iloc
提取一个子数据帧并尝试向该子数据帧添加新列:
apple_2 = apple.iloc[1:5,:]
apple_2['test2'] = np.arange(4)
我收到错误消息:
<stdin>:1: 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
我在做错什么,应该怎么做?错误提示使用.loc
,但我不知道如何使用它来添加新列。
答案 0 :(得分:1)
您可以这样做:
apple_2 = apple.loc[:, 'High':'Close']
这将为您提供“高”和“关闭”(不关闭)之间的所有列。 但是,还有其他方式可以对数据帧进行列切片。您选中此question。
编辑:
apple_2 = apple.loc[:, 'High':'Close']
#add a new column to apple_2
apple_2['new_column'] = np.arange(apple_2.shape[0])