当前位置: 首页 > 知识库问答 >
问题:

KeyError:0

余弘新
2023-03-14

我需要帮助。我正在尝试过滤并写入另一个csv文件,该文件包含10769秒后收集到的数据,以及加速度大小。但是,我得到一个关键错误:0。。。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv(accelDataPath)
data.columns = ['t', 'x', 'y', 'z']

# calculate the magnitude of acceleration 
data['m'] = np.sqrt(data['x']**2 + data['y']**2 + data['z']**2)

data['datetime'] = pd.DatetimeIndex(pd.to_datetime(data['t'], unit = 'ms').dt.tz_localize('UTC').dt.tz_convert('US/Eastern'))
data['elapsed_seconds'] = (data['datetime'] -  data['datetime'].iloc[0]).dt.total_seconds()
i=0
csv = open("filteredData.csv", "w+")
csv.write("Event at, Magnitude \n")
while (i < len(data[data.elapsed_seconds > 10769])):
   csv.write(str(data[data.elapsed_seconds > 10769][i]) + ", " + str(data[data.m][i]) + "\n")
csv.close()

我得到的错误是:

Traceback (most recent call last):
  File "C:\Users\Desktop\AnalyzingData.py", line 37, in <module>
csv.write(str(data[data.elapsed_seconds > 10769][i]) + ", " + str(data[data.m][i]) + "\n")
  File "C:\python\lib\site-packages\pandas\core\frame.py", line 1964, in __getitem__
    return self._getitem_column(key)
  File "C:\python\lib\site-packages\pandas\core\frame.py", line 1971, in _getitem_column
    return self._get_item_cache(key)
  File "C:\python\lib\site-packages\pandas\core\generic.py", line 1645, in _get_item_cache
    values = self._data.get(item)
  File "C:\python\lib\site-packages\pandas\core\internals.py", line 3590, in get
    loc = self.items.get_loc(item)
  File "C:\python\lib\site-packages\pandas\core\indexes\base.py", line 2444, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas\_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5280)
      File "pandas\_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5126)
      File "pandas\_libs\hashtable_class_helper.pxi", line 1210, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20523)
      File "pandas\_libs\hashtable_class_helper.pxi", line 1218, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20477)
    KeyError: 0

共有2个答案

贾成天
2023-03-14

我也有同样的问题,通过遵循这一建议得到了解决。简而言之,不要使用df[0],而是使用显式的df['columnname']

白高超
2023-03-14

改变这条线

csv.write(
    str(data[data.elapsed_seconds > 10769][i]) + ", " + str(data[data.m][i]) + "\n"
    )

为此:

csv.write(
   str(data[data.elapsed_seconds > 10769].iloc[i]) + ", " + str(data[data.m].iloc[i]) +"\n"
   )

另外,请注意,您并没有像下面这样在同时循环中增加i

或者,最好使用df。至_csv,如下所示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv(accelDataPath)
data.columns = ['t', 'x', 'y', 'z']

# calculate the magnitude of acceleration 
data['m'] = np.sqrt(data['x']**2 + data['y']**2 + data['z']**2)

data['datetime'] = pd.DatetimeIndex(pd.to_datetime(data['t'], unit = 'ms').dt.tz_localize('UTC').dt.tz_convert('US/Eastern'))
data['elapsed_seconds'] = (data['datetime'] -  data['datetime'].iloc[0]).dt.total_seconds()

# write to csv using data.to_csv 
data[data.elapsed_seconds > 10769][['elapsed_seconds', 'm']].to_csv("filteredData.csv", 
            sep=",", 
            index=False)
 类似资料:
  • 早上好,我已经使用python大约一年半了,我发现自己面临着一个无法解决的基本问题。 我有一个简单的数据帧(df),不太大(大约12k行和10列),其中包括一列是“datetime64[ns]”格式,一列是“float64”,所有其他的都是“object”。我进行了调试,可以说错误来自datetime列。 当我将此df保存到Excel时,会收到以下消息: 文件“test.py”,第16行,在测试中

  • 问题内容: 以下代码段: 抛出KeyError: 有人知道为什么吗? 问题答案: 该代码中有许多未转义的花括号。Python认为所有花括号都是占位符,并正在尝试替换所有花括号。但是,您只提供了一个值。 我希望您不希望所有的花括号都成为占位符,因此您应该将不希望使用的花括号加倍。如: 我还随意使用字符串文字的三引号,因此您无需在每行末尾使用反斜杠。

  • 问题内容: 我想从这里使用以下代码: 如何在当前python会话中保存所有变量? 但是它给出了以下错误: 你能帮我吗? 谢谢! 问题答案: 从您的追溯来看,您似乎正在尝试从函数内部运行该代码。 但是在 当前本地范围内 查找名称。因此,如果在函数内部定义,它将在中而不是中。 您可能想要这样的东西: 请注意,当从函数 内部 调用时,它将从 定义 函数的模块返回变量,而不是从其 调用的位置返回 。 因此

  • 我有: 然后按以下方式重命名first value: 什么是问题?有人能解释一下吗?还是虫子?

  • 问题内容: 我有以下代码, 在csv文件没有足够的覆盖范围(所有工作日)之前,它一直有效。例如,对于以下.csv文件, 我会收到以下错误: 它似乎有一个非常简单的修复程序,但是我对Python来说还太陌生,不知道如何修复它。 问题答案: 使用以获得您所需要的所有列。它将保留已经存在的那些,否则将其放入空列。 因此,您的整个代码示例应如下所示:

  • 问题内容: 我正在调用一些JSON并将相关数据解析为CSV。我无法弄清楚如何使用默认密钥填充中间的JSON dict文件,因为其中很多是未填充的。当我尝试将内容解析为CSV时,结果为KeyError。 我现在收到(制造商)的“ NoneType”错误: 问题答案: 您可以使用而不是直接引用键。