функция для изменения списка фреймов данных - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу автоматизировать некоторую подпрограмму с кодом 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.

У меня есть список фрейма данных pandas со складскими данными (по 5 столбцов в каждом). Мне нужна функция, которая принимает в качестве аргумента этот список, просматривает все элементы и изменяет их на dfs только с колонкой «Adj Close», а затем возвращает список изменений 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

В чем проблема? Большое спасибо!

1 Ответ

1 голос
/ 01 апреля 2020
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

Если вам нужно определить это, не задавая значение, просто скажите переменную = Нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...