python - 更改数据框列表的函数
问题描述
我想用 python 代码自动化一些例程:
portfolio = [ apple, tesla, amazon]
def change_dim(list):
for x in list:
x = x['Adj Close']
return list
# That doesn't work for me.
我有一个带有股票数据的熊猫数据框列表(每列 5 列)。我需要一个函数,该函数将列表作为参数,遍历所有项目并将它们更改为仅具有“Adj Close”列的 dfs,然后返回更改列表 dfs。如果您能提供超过 1 个选项,我将不胜感激。
添加只是想在这里问另一个问题:在我有了这个数据框之后,我想合并它们:
# apple , amazon - two df with the same datetime index and 'Adj Close' #columns
portfolio = pd.merge(apple, amazon, how = 'left', on = apple)
这给了我下一个错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-54-e47969d90c08> in <module>
----> 1 portfolio = pd.merge(apple, amazon, how = 'left', on = apple)
~/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
45 right_index=right_index, sort=sort, suffixes=suffixes,
46 copy=copy, indicator=indicator,
---> 47 validate=validate)
48 return op.get_result()
49
~/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, validate)
527 (self.left_join_keys,
528 self.right_join_keys,
--> 529 self.join_names) = self._get_merge_keys()
530
531 # validate the merge keys dtypes. We may need to coerce
~/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py in _get_merge_keys(self)
821 if rk is not None:
822 right_keys.append(
--> 823 right._get_label_or_level_values(rk))
824 join_names.append(rk)
825 else:
~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in _get_label_or_level_values(self, key, axis)
1704 values = self.axes[axis].get_level_values(key)._values
1705 else:
-> 1706 raise KeyError(key)
1707
1708 # Check for duplicates
KeyError: Date
问题是什么?非常感谢!
解决方案
portfolio = [ apple, tesla, amazon]
def change_dim(list):
for x in list:
x = x['Adj Close']
return list
这里的问题是 apple、tesla 和 amazon 不是定义变量。您可以通过定义它们来解决这个问题:
apple = value
tesla = value
amazon = value
portfolio = [ apple, tesla, amazon]
def change_dim(list):
for x in list:
x = x['Adj Close']
return list
如果您需要定义它而不给它一个值,只需说 variable = None
推荐阅读
- ios - Firebase更改显示在谷歌登录警报上的应用名称?
- shell - 终端:cp -r -u 命令不会递归地将文件夹内容复制到另一个文件夹
- node.js - Angular 6 - 如何在每个请求中维护 jwt 会话?
- oracle - 如何更改 apex oracle 中的表单图标?
- java - 使用 java.util.zip 写入大小
- twitter-bootstrap - 如何在单击箭头时更改引导 4 旋转速度?
- python-2.7 - 字典:按字母顺序排列列表的元素并计算其出现次数
- python - QT 将灰度图像绘制成伪彩色(PyQt)
- java - Java 8 Streams:将对象列表转换为一组对象
- memory - 访问使用内存位置声明的变量