python - 如何从熊猫向子数据框添加新列
问题描述
我开始使用熊猫,所以这可能是一个非常明显的问题,但我一直在努力解决它一段时间,但没有找到解决方案。
考虑这个数据框:
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
但我不知道如何使用它来添加新列。
解决方案
你可以做:
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])
推荐阅读
- asp.net - 在提交给 HomeController 之前将 input[type=file] 转换为 Base64
- php - How do I redirect to another page in a condition using php?
- python - 如何在数字中添加文字?Python
- elasticsearch - 在 Elasticsearch 上,如何根据字段中的项目数进行聚合?
- python - 使用 python jsocket 处理连接关闭
- faktor-ips - Faktor-IPS MessageList 是否有任何匹配器可用?
- java - Apache Http 客户端是否在没有消息的情况下处理状态代码?(Curl 有效,但 Http 客户端失败)
- python - discord-py-slash 问题:`cog_ext.cog_slash` 有冷却装饰器吗?
- python - 带有 Plotly Dash 的 Python 中的 Sunburst:更新后从特定根目录开始
- javascript - Javascript-Vuejs 用 div 持有的相同表情符号替换表情符号