熊猫错误:传递缺少标签的列表

时间:2020-04-08 16:41:31

标签: python-3.x pandas csv dataframe syntax-error

对不起,我已经通过为exact_time的额外列修改源csv数据来解决了这个问题。目前已解决。感谢您的回答Vishnudev和Anky

我有一个数据文件“ 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'

请帮助我解决通过列表错误。

1 个答案:

答案 0 :(得分:2)

您的代码中的

to_csv调用具有不正确的column参数。另外,没有时间栏。

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')