首页 > 解决方案 > 如何从熊猫向子数据框添加新列

问题描述

我开始使用熊猫,所以这可能是一个非常明显的问题,但我一直在努力解决它一段时间,但没有找到解决方案。

考虑这个数据框:

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但我不知道如何使用它来添加新列。

标签: pythonpandasdataframe

解决方案


你可以做:

apple_2 = apple.loc[:, 'High':'Close']

这将为您提供“高”和“关闭”之间的所有列(不关闭)。但是还有其他方法可以对数据框进行列切片。你检查一下这个问题

编辑:

apple_2 = apple.loc[:, 'High':'Close']
#add a new column to apple_2
apple_2['new_column'] = np.arange(apple_2.shape[0]) 

推荐阅读