Pandas Ошибка: передача списков с отсутствующими метками - PullRequest
0 голосов
/ 08 апреля 2020

Извините, я решил этот вопрос, изменив исходные данные CSV с помощью дополнительного столбца для точного времени. Это решено на данный момент. Спасибо за ответы Вишнудев и Анки

У меня есть файл данных "main_file.csv", который содержит данные в следующем формате.

symbol,value
apple,340
ibm,194

Когда я пытаюсь использовать приведенную ниже программу для ассимилировав эти значения в связанные csv-файлы, я получаю сообщение об ошибке, которое отображается в конце.

import datetime
import pandas as pd

main_list1 = ['apple', 'ibm']
df = pd.read_csv("main_file.csv")
df = df[df['symbol'].isin(main_list1)]

gb = df.groupby('symbol')
for name, group in gb:
    exact_time = str(datetime.datetime.now())
    with open('{}.csv'.format(name), 'a') as f:
        group.to_csv(f, header=False, index=True, columns=[exact_time, "lastPrice"])

Ожидаемый результат:

Для ' apple.csv ':

time,value
2020-04-08 22:00:11.863433,340

Для' ibm.csv ':

time,value
2020-04-08 22:00:11.863433,194

Но я получаю следующую ошибку:

Traceback (most recent call last):
  File "D:\Testing\Trials.py", line 98, in <module>
    group.to_csv(f, header=False, index=True, columns=[exact_time, "lastPrice"])
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\generic.py", line 3202, in to_csv
    decimal=decimal,
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\io\formats\csvs.py", line 115, in __init__
    self.obj = self.obj.loc[:, cols]
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1762, in __getitem__
    return self._getitem_tuple(key)
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1289, in _getitem_tuple
    retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1954, in _getitem_axis
    return self._getitem_iterable(key, axis=axis)
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1595, in _getitem_iterable
    keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1553, in _get_listlike_indexer
    keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing
  File "C:\Winpy\WPy64_368\python-3.6.8.amd64\lib\site-packages\pandas\core\indexing.py", line 1655, in _validate_read_indexer
    "Passing list-likes to .loc or [] with any missing labels "
KeyError: 'Passing list-likes to .loc or [] with any missing labels is no longer supported, see https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike'

Пожалуйста, помогите мне исправить ошибку Passing list.

1 Ответ

2 голосов
/ 08 апреля 2020

to_csv вызов в вашем коде имеет неверный аргумент столбцов. Кроме того, столбец времени отсутствует.

from datetime import datetime as dt

main_list1 = ['apple', 'ibm']
df = pd.read_csv("main_file.csv")
df = df.loc[df['symbol'].isin(main_list1)]

gb = df.groupby('symbol')
for name, group in gb:
    group = group.assign(time=dt.now()).drop(columns=['symbol'])
    group.to_csv(name + '.csv')
...