我需要帮助。我正在尝试过滤并写入另一个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
我也有同样的问题,通过遵循这一建议得到了解决。简而言之,不要使用df[0]
,而是使用显式的df['columnname']
改变这条线
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”错误: 问题答案: 您可以使用而不是直接引用键。